@IvanRobot

Как отсортировать объекты внутри массива?

Имеется массив содержащий внутри себя множество объектов. Пример:

var arr = [
  { price: 10, amount: 10},
  { price: 12, amount: 12},
  { price: 9, amount: 7},
  ...
];


При изменении объекта (или добавлении нового) содержащим самое высокое значение свойства `price` должна запускаться некоторая функция. Причём эта функция должна получать не только объект с максимальным `price`, но и с прайсами чуть меньше.. Поэтому я хотел отсортировать все объекты по их цене, то есть добавить свойство `index` и присваивать единицу внутри объекта с самым большим `price`. И для каждой следующей цены увеличивать индекс на единицу. При изменении значение объекта с `index : 1` -- запускать функцию.

Но я не знаю как мне отсортировать объекты по свойству? И как потом смещать этот индекс? Help me, please :)
  • Вопрос задан
  • 224 просмотра
Решения вопроса 1
mlnkv
@mlnkv
JavaScript Developer
var arr = [
  { price: 10, amount: 10 },
  { price: 12, amount: 12 },
  { price: 9, amount: 7 },
  { price: 17, amount: 8 },
  { price: 4, amount: 2 }
]

arr
  .sort(function(a, b) {
    return a.price - b.price
  })
  .reverse()
  .map(function(item, i) {
    item.index = i + 1 
  })

console.log(arr)
/*
[
  { price: 17, amount: 8, index: 1 },
  { price: 12, amount: 12, index: 2 },
  { price: 10, amount: 10, index: 3 },
  { price: 9, amount: 7, index: 4 },
  { price: 4, amount: 2, index: 5 }
]
*/
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
var sorted = products.sort((curr, prev)=>{
  if (curr.price > prev.price) return 1
  if (curr.price < prev.price) return -1
  return 0
})
https://jsfiddle.net/0v0vhrqu/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы