Эта задача эквивалентна запрос SQL:
SELECT name, sum(qty), price
FROM dataObject
GROUP BY name, price
ORDER BY sum(qty) DESC
Вы можете использовать встроенные функции .reduce()
для aggregrate данных, а затем .sort()
сортировать по qty
:
HTML :
<div id="results"></div>
Javascript:
// Sample data
arr = [{ name: 'happ', qty: 1, price: 50 },
{ name: 'happ', qty: 1, price: 50 },
{ name: 'happ', qty: 1, price: 50 },
{ name: 'happ', qty: 2, price: 10 },
{ name: 'app', qty: 1, price: 50 },
{ name: 'app', qty: 1, price: 50 },
{ name: 'app', qty: 1, price: 50 },
{ name: 'app', qty: 2, price: 10 }];
var groupedObjects = arr.reduce(function(res, obj) {
if (!((obj.name + obj.price) in res))
res.__array.push(res[obj.name + obj.price] = obj);
else {
res[obj.name + obj.price].qty += obj.qty;
}
return res;
}, {__array:[]}).__array
.sort(function(a,b) { return b.qty - a.qty; });
// print results for testing
_.each(groupedObjects,function(obj){
var output = '';
_.each(obj,function(val,key){
output += key+': '+val+'<br>';
});
output += '<br>';
$('#results').append(output);
});
Выход:
name: happ
qty: 3
price: 50
name: app
qty: 3
price: 50
name: happ
qty: 2
price: 10
name: app
qty: 2
price: 1
Working Demo
Что вы сделали до сих пор? –
@IqbalFauzi Я создал только массив javascript, но не могу найти, как это сделать с этим. – Happy
Можете ли вы разместить свой массив? – hsz