• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Проблема с сортировкой объекта за property JS

UnO33

Эксперт
Professional
Пользователь
Регистрация
4 Фев 2013
Сообщения
1,844
Лучшие ответы
26
Репутация
537
Награды
2
Кто там шарит джс?)
Есть массив типа:
JavaScript:
const products = [
    {
        ratingReviews: '264 отзыва',
        price: {
            oldUan: '4 333 грн',
            newUan: '3 799 грн',
        },
        name: 'Motorola MOTO G4 (XT1622) Black',
    }, {
        ratingReviews: '1355 отзывов',
        price: '4 999 грн',
        name: 'Samsung Galaxy J7 J700H/DS Black + карта памяти 16гб + чехол + защитное стекло!',
    }, {
        ratingReviews: '426 отзывов',
        price: '5 199 грн',
        name: 'Samsung Galaxy J5 (2016) J510H/DS Black + защитное стекло + чехол!',
    }, {
        ratingReviews: '7 отзывов',
        price: {
            oldUan: '10 999 грн',
            newUan: '9 999 грн',
        },
        name: 'HTC One X10 Dual Sim Silver',
    }, {
        ratingReviews: '18 отзывов',
        price: {
            oldUan: '5 999 грн',
            newUan: '4 999 грн',
        },
        name: 'Sony Xperia L1 Dual Black',
    }];
Нужно отсортировать по убыванию за прайсом, либо, где price состоит из двух свойств, за newUan.
Получается вот так:
JavaScript:
const sortedByPrice = () => {
    let copiedProducts = JSON.parse(JSON.stringify(products));

    copiedProducts.sort((a, b) => (parseInt(b.price.newUan === undefined ? b.price : b.price.newUan)
        - parseInt(a.price.newUan === undefined ? a.price : a.price.newUan)))
    {
        return copiedProducts;
    }
};
И всё было бы хорошо, если бы оно работало)0)
Юнит-тест тоже отъехал:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!


За таким же принципом сделал сортировку за ratingReviews(разве что без тернарника) - всё отлично работает.
 
Последнее редактирование:
Сверху Снизу