Почему моя функция не сортирует свойства объекта правильно? - PullRequest
0 голосов
/ 12 марта 2020

Я делаю таблицу реакции с сортируемыми колонками. Когда я сортирую возрастную строку, результат сортируется неправильно. Я пошел и проверил обратно, чтобы убедиться, что я сортировал правильно и добавил некоторые повторяющиеся числа к данным. Я также проверил наличие пробелов или ошибок в данных. Я также пытался убедиться, что они были числами, а не строками. Кажется, что-то не так с какими-либо «возрастными» свойствами. Так почему же сортировка в отношении 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>
)}
)}

А вот снимок экрана с полученной сортировкой: enter image description here

1 Ответ

0 голосов
/ 12 марта 2020

Заметил ошибку, как раз когда я собирался отправить вопрос. Так как я тщательно отредактировал вопрос, я подумал, что смогу представить его на тот случай, если он пригодится любому, кто также пропустит ту же ошибку.

Я сортировал объекты, а не свойства объекта. Для правильной сортировки по возрасту необходимо сравнить возрастные свойства параметра.

       age: {
            class: 'age',
            fn: (a, b) => a.age-b.age //Remember the property
        },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...