У меня есть простой случай с переупорядочиванием элементов в массиве с помощью prop minLVL
каждого object
в нем.
Но по какой-то причине он работает только в том случае, если присутствует предыдущий и следующий реквизиты (так как вы можете видеть, что у каждого object
не minLVL
поля minLVL
). Итак, если minLVL
отсутствует в каком-либо объекте, он не переустанавливает такой элемент в нижней части списка, он просто остается в том же положении.
Как я могу это решить? Спасибо
Пример:
var h = [
{
ID: 172
},
{
ID: 179,
minLVL: "30"
},
{
ID: 169
},
{
ID: 173
},
{
ID: 167,
minLVL: "25"
},
{
ID: 175,
minLVL: "10"
}
]
var n = h.sort((a, b) => Number(b.minLVL) - Number(a.minLVL))
console.log(n)
Вы можете по умолчанию использовать эти значения в 0
если они не существуют внутри функции сортировки:
var h = [{
ID: 172
}, {
ID: 179,
minCrimeLevel: "30"
}, {
ID: 169
}, {
ID: 173
}, {
ID: 167,
minCrimeLevel: "25"
}, {
ID: 175,
minCrimeLevel: "10"
}]
var n = h.sort((a, b) => (Number(b.minCrimeLevel) || 0) - (Number(a.minCrimeLevel)|| 0))
console.log(n)
undefined
значениями?NaN
это специальное значение -NaN > 0
,NaN < 0
, иNaN == 0
все оценивается вfalse
, потому чтоNaN
есть (немного парадоксальный) число , но означает значение , которое ... не является число ,undefined
не относится к номеру типа, поэтому он приводится к единице. Нечего принуждать сNaN
.