Сортировка массива с объектами js

222
27 марта 2018, 03:07

Здравствуйте, мне по API приходит массив с объектами, в каждом объекте есть ключ price. Нужно сделать фильтрацию по убыванию и возрастанию цены. Но с сервера иногда может приходить price пустой или равен 0, тогда нужно эти объекты показывать в самом низу, при любой сортировке по убыванию или возрастанию. Подскажите, пожалуйста, как это сделать.
Вот код, который есть сейчас. products - массив с объектами

const sortArray = (type) => {
 switch(type) {
  case 'cheap':
    return products.sort((objA, objB) => {
      return objA.price - objB.price;
    });
  case 'expensive':
    return products.sort((objA, objB) => {
      return objB.price - objA.price;
    });
}

};

Answer 1

Ну сделайте функцию сортировки такую:

(objA, objB) => {
    var priceA = objA.price || 0;
    var priceB = objB.price || 0;
    return priceA - priceB;
}

В данном случае если у объекта нет price, то цена будет 0. Можете поменять логику, и присваивать цене какое-то огромное значение, если нужно поместить объект с другой стороны списка. Как-то так

READ ALSO
Как перенести функции на сервер JS

Как перенести функции на сервер JS

Приветствую всехВозникла задача скрыть js код на сайте

178
jquery собые по клику на внутренних ссылках

jquery собые по клику на внутренних ссылках

Есть див-обертка внутри куча li div aэто меню

202
Как перехватить нажатие клавиши в textarea?

Как перехватить нажатие клавиши в textarea?

У меня есть тег textarea, в котором пользователь должен менять заголовок страницыПри нажатии на ENTER будут происходить определённые действия,...

200