javascript – 删除数组中的重复对象,保留具有最大属性值的对象

我有这样一个数组:

const array=[ {id:0, quantity:1}, {id:1, quantity:2}, {id:0, quantity:4} ]

我的目标是这样的:

const array=[ {id:1, quantity:2}, {id:0, quantity:4} ]

只要能找到数量较大的’id’,对象的顺序就无关紧要了

我尝试过滤findIndex,地图过滤器等,但我一直犯错误.我需要帮助.

解决方法:

您可以使用哈希表并检查具有相同ID的对象是否在结果集中.如果实际数量较大,请指定实际对象.

var array = [{ id: 0, quantity: 1 }, { id: 1, quantity: 2 }, { id: 0, quantity: 4 }],
    hash = Object.create(null),
    unique = array.reduce(function (r, o) {
        if (!(o.id in hash)) {
            hash[o.id] = r.push(o) - 1;
            return r;
        }
        if (o.quantity > r[hash[o.id]].quantity) {
            r[hash[o.id]] = o;
        }
        return r;
    }, []);
    
console.log(unique);
.as-console-wrapper { max-height: 100% !important; top: 0; }
上一篇:linux – 如何使用ffmpeg从视频中删除重复帧


下一篇:phpMyAdmin:MySQL错误1062 – 重复输入