Некорректно работает sort() в массиве объектов
sortNums(prop) {
this.database.sort(function (a, b) {
var response = 0;
if (a[prop] > b[prop]) {
console.log(a[prop] + '>' + b[prop])
response = 1
}
if (a[prop] < b[prop]) {
console.log(a[prop] + '<' + b[prop])
response = -1
}
if (a[prop] = b[prop]) {
console.log(a[prop] + '=' + b[prop])
response = 0
}
return response
})
}
Значение b[prop] возвращается одно и то же весь цикл сортировки. И почему-то даже меняет значения одинаковых свойств в массиве объектов на это же. Как это исправить?
Ответы (2 шт):
Автор решения: entithat
→ Ссылка
У Вас ошибка в if (a[prop] = b[prop]), для сравнения надо использовать двойное ==.
const arr = [{'a': 5}, {'a': 6}, {'a': 3}, {'a': 2}]
const prop = 'a'
arr.sort(function(a, b) {
var response = 0;
if (a[prop] > b[prop]) {
console.log(a[prop] + '>' + b[prop])
response = 1
}
if (a[prop] < b[prop]) {
console.log(a[prop] + '<' + b[prop])
response = -1
}
if (a[prop] == b[prop]) {
console.log(a[prop] + '=' + b[prop])
response = 0
}
return response
})
console.log(arr)
Автор решения: c_k_rim
→ Ссылка
Я контекста Вашего проекта не знаю, но что-то мне подсказывает, что Вам подойдет простое:
sortNums(prop) {
this.database.sort((a, b) => a[prop] - b[prop])
}