gpt4 book ai didi

Javascript es6 - 如何删除对象数组中的重复项,最后一个重复项除外?

转载 作者:搜寻专家 更新时间:2023-10-30 21:02:24 24 4
gpt4 key购买 nike

我有一个数组:

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 );

关于Javascript es6 - 如何删除对象数组中的重复项,最后一个重复项除外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49189395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com