Я нашел несколько ответов на этот вопрос, но по какой-то причине это не сработало для меня.
У меня есть большой массив объектов, которые нужно сортировать с помощью логического свойства (все те, которые true
должны появляться первыми). Самый популярный ответ, который я нахожу, это:
let myList = [
{
thing: <div>Something</div>,
sortingAttribute: false
},
{
thing: <div>Something else</div>,
sortingAttribute: true
},
{
thing: <div>Whatever</div>,
sortingAttribute: true
}
.
.
.
]
myList.sort((x, y) => {
return (x.sortingAttribute === y.sortingAttribute) ? 0 : x ? -1 : 1
})
К сожалению, это не работает, и я попытался сделать несколько его вариантов, но безуспешно.
Альтернативой этому является просто:
myList.sort((x, y) => {return x.sortingAttribute - y.sortingAttribute})
Однако это также не сработало. Я также попытался использовать функцию сортировки selecters, но ничего.
Я бы не подумал, что это имеет к этому какое-то отношение, но до попытки сортировки я делаю .map()
в другом списке, чтобы получить myList
как сейчас. Будет ли это как-то причиной проблемы? Кроме того, это довольно прямолинейно.
Вот полная функция:
getMyList (basicArray) {
let myList = basicArray.map((arr, key) => {
const sortingAttribute = key > 2 // just used for the example
// the real code would obviously generate a more random order of trues and falses
// do other stuff
return {
thing: (<div key={key}>{stuff}</div>),
sortingAttribute: sortingAttribute
}
})
myList.sort((x, y) => {
return (x.isQualified === y.isQualified) ? 0 : x ? -1 : 1
})
console.log('myList SORTED', myList)
}
В настоящее время отображается точно тот порядок, который выплевывался из .map()
So для массива размером 5, мы бы имели:
false, false, false, true, true
Вы можете взять дельта логического значения b
и значение a
, потому что true
становится значением 1
и false
0
с неявным литьем в число с помощью оператора минус.
var array = [false, true, false, false, true, true, false, true];
array.sort((a, b) => b - a);
console.log(array);
myList = myList.sort((x, y) => {return x.sortingAttribute - y.sortingAttribute})
?