Hoà*_*yễn 3 javascript typescript ecmascript-6
我有一个数组:
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}
]
Run Code Online (Sandbox Code Playgroud)
我想删除具有相同价格的重复项,并且仅保留最后一个重复项,然后根据价格从最高到最低对数组进行排序.这是我想要的结果:
var result = [
{price: 10, amount: 20},
{price : 7, amount: 15},
{price: 5, amount: 100},
{price: 3, amount: 65},
{price: 2, amount: 34}
]
Run Code Online (Sandbox Code Playgroud)
用于reduce首先将其转换为对象以删除重复项,最后一个副本应覆盖前一个副本
var obj = arr.reduce( ( acc, c ) => Object.assign(acc, {[c.price]:c.amount}) , {});
Run Code Online (Sandbox Code Playgroud)
将其转换回数组并对其进行排序
var output = Object.keys( obj )
.map( s => ({ price : s, amount : obj[ s ] }) )
.sort( ( a, b ) => b.price - a.price );
Run Code Online (Sandbox Code Playgroud)
演示
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 );Run Code Online (Sandbox Code Playgroud)