Сортировка массива объектов по возрастанию

У меня есть такой код

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);

→ Ссылка