[英]Why isn't my function sorting object properties correctly?
我正在制作一个带有可排序列的反应表。 当我对年龄行进行排序时,结果没有正确排序。 我回去检查以确保我正确排序并在数据中添加了一些重复数字。 我还检查了数据中的空格或错误。 我还尝试确保它们是数字而不是字符串。 任何“年龄”属性似乎都没有任何问题。 那么为什么将 25 排序为高于 32 呢?
这是代码(我修剪了重复的其他属性,用 ... 注释,除了扩展运算符,这当然是扩展运算符):
function PeopleList({participants}){
const [reverse, setReverse] = useToggle(true);
let [sortType, setSort] = useState('default')
let reverseFunction = (arr) => {
if(reverse){
return arr.reverse()
} else {
return arr
}
}
let sortRows = {
...
age: {
class: 'age',
fn: (a, b) => a-b
},
default: {
class: 'default',
fn: (a, b)=>a
}
}
return (
<table>
<thead>
<tr>
...
<td><Button onClick={()=>{setSort('age'); setReverse()}}>
...
</tr>
</thead>
<tbody>
{reverseFunction([...list].sort(sortRows[sortType].fn)).map(person=>{
return <tr>
...
<td>{person.age}</td>
...
</tr>
)}
)}
就在我即将提交问题时注意到错误。 由于我仔细编辑了问题,我想我会提交以防万一它对任何忽略相同错误的人有用。
我正在对对象进行排序,而不是对对象属性进行排序。 要正确按年龄排序,应该比较参数的年龄属性。
age: {
class: 'age',
fn: (a, b) => a.age-b.age //Remember the property
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.