【发布时间】:2020-03-11 21:12:39
【问题描述】:
我正在制作一个带有可排序列的反应表。当我对年龄行进行排序时,结果排序不正确。我回去检查以确保我正确排序并在数据中添加了一些重复数字。我还检查了数据中的空白或错误。我还尝试确保它们是数字而不是字符串。任何“年龄”属性似乎都没有任何问题。那么为什么排序认为 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>
)}
)}
【问题讨论】:
-
tbody中
sortType的值是多少? -
该按钮将其设置为年龄,但它以默认方式开始。问题是我正在对对象而不是属性进行排序。
-
输入的数字是字符串而不是整数?
标签: javascript arrays reactjs sorting object