Как отсортировать эти обьекты по прайсу?
var goods = {
'14042G' : {
'img' : 'img/sushka.png',
'name' : 'Сушка кухонна хром с алюминиевой рамой',
'code' : '14042G',
'price' : '700',
},
'14042B' : {
'img' : 'img/sushka.png',
'name' : 'Сушка кухонна хром с алюминиевой рамой',
'code' : '14042B',
'price' : '900'
},
'14042С' : {
'img' : 'img/sushka.png',
'name' : 'Сушка кухонна хром с алюминиевой рамой',
'code' : '14042B',
'price' : '100'
}
};
var product__carts = '';
for (key in goods) {
product__carts +=
'<li class="product__cart">'
+'<img class="product__img" src="' +goods[key].img +'">'
+'<h3 class="product__name">' +goods[key].name +'<h1>'
+'<p class="product__code"> Код товару:' +goods[key].code +'</p>'
+'<p class ="product__down"><span class="product__pirce">' +goods[key].price +' Грн' +'</span>' +'<img src="img/basket.svg" class="pointer" alt=""></p>'
+'</li>'
}
document.getElementById('catalog__goods').innerHTML = product__carts
Ответы (2 шт):
Автор решения: Ivan Silkin
→ Ссылка
Не уверен, что это поможет, но в некоторых других языках, схожих по синтаксису с JavaScript, это можно сделать примерно так:
goods = goods.Select( g => g ).OrderBy( g => g.price).Descending();
Должны быть аналогичные методы в скрипте, я уверен, для массивов. Надо искать по ключевым словам sort array of objects descending js в гугле, желательно на английском, скорее всего там будет прямо пример кода.
Навроде того (гуглится не более 5 минут):
goods.sort(function(a, b) {
return parseFloat(a.price) - parseFloat(b.price);
});
или для ES6
goods.sort((a, b) => parseFloat(a.price) - parseFloat(b.price));
// нисходящий порядок
goods.sort((a, b) => parseFloat(b.price) - parseFloat(a.price));
Автор решения: Daniel Laskin
→ Ссылка
Вообще лучше однотипные объекты передавать в массиве. Но если входящие данные изменить нельзя, то сортировка объекта делается следующим образом. Нужно взять все значения объекта goods и уже массив этих значений сортировать
const product__carts = Object.values(goodsData)
.sort((a, b) => a.price - b.price)
.reduce((acc, item) => acc +
`<li class="product__cart">
<img src="${item.img}" alt="${item.name}">
<img class="product__img" src="${item.img}">
<h3 class="product__name">${item.name}<h1>
<p class="product__code">${item.code}</p>
<p class ="product__down">
<span class="product__pirce">${item.price} Грн</span>
<img src="img/basket.svg" class="pointer" alt="">
</p>
</li>`, '');