我有一个数组:
var arr = [
{price: 5, amount: 100},
{price: 3, amount: 50},
{price: 10, amount: 20},
{price: 3, amount: 75},
{price: 7, amount: 15},
{price: 3, amount: 65},
{price: 2, amount: 34}
]
我想删除价格相同的重复项,只保留最后一个重复项,然后根据价格从最高到最低对数组进行排序。这是我想要的结果:
var result = [
{price: 10, amount: 20},
{price : 7, amount: 15},
{price: 5, amount: 100},
{price: 3, amount: 65},
{price: 2, amount: 34}
]
使用reduce
将其转换对象先删除重复项和最后一式两份应覆盖旧
var obj = arr.reduce( ( acc, c ) => Object.assign(acc, {[c.price]:c.amount}) , {});
将其转换回数组并进行相同的排序
var output = Object.keys( obj )
.map( s => ({ price : s, amount : obj[ s ] }) )
.sort( ( a, b ) => b.price - a.price );
演示版
var arr = [
{price: 5, amount: 100},
{price: 3, amount: 50},
{price: 10, amount: 20},
{price: 3, amount: 75},
{price: 7, amount: 15},
{price: 3, amount: 65},
{price: 2, amount: 34}
];
var obj = arr.reduce( ( acc, c ) => Object.assign(acc, {[c.price]:c.amount}) , {});
var output = Object.keys( obj )
.map( s => ({ price : s, amount : obj[ s ] }) )
.sort( ( a, b ) => b.price - a.price );
console.log( output );
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句