Сортировка массива объектов по возрастанию
У меня есть такой код
let data = [ {"price" : "1000"} , {"price" : "500"} , {"price" : "100"} ];
data.sort();
console.log(data);
//должно выйти - [{"price" : "100"},{"price" : "500"},{"price" : "1000"}]
и у меня вопрос: Как мне отсортировать по значениям цен?
Скрипт должен сортировать массив объектов по возрастанию цены
Ответы (2 шт):
Автор решения: Евгений Колмак
→ Ссылка
let data = [{
"price": "1000"
}, {
"price": "500"
}, {
"price": "100"
}];
data.sort((a, b) => a > b ? 1 : -1);
console.log(data);
Автор решения: EzioMercer
→ Ссылка
Понятия и не имею как был принят предыдщий ответ, но явно не работает и вот наглядное док-во:
let data = [{
"price": "1000"
}, {
"price": "100"
}, {
"price": "500"
}];
data.sort((a, b) => a > b ? 1 : -1);
console.log(data);
- Во первых, как можно увидеть он просто выводит в том же порядке что и записано в массив
- Во вторых возвращать
-1, когда элементы равны нельзя. В этом вопросе обсуждалось это
А вот то что вам нужно было на самом деле:
const data = [{
"price": "1000"
}, {
"price": "100"
}, {
"price": "500"
}];
data.sort((a, b) => (+a.price) - (+b.price));
console.log(data);
// Ну или можно записать явное преобразование в число, если читать плюсики не очень удобно
data.sort((a, b) => Number(a.price) - Number(b.price));
console.log(data);