繁体   English   中英

为什么我的函数不能正确排序对象属性?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM