在javascript中查找对象数组中的重复项

Rah*_*tia 5 javascript jquery

我有一个对象数组,如下所示:

            {value: 20, color: 'F88C00'},
            {value: 40, color: 'D8605F'},
            {value: 20, color: '72C380'},
            {value: 20, color: '2C7282'},
            {value: 20, color: '72C380'}
Run Code Online (Sandbox Code Playgroud)

我想使用javascript/jquery循环遍历它们以检查颜色列中是否有任何重复项,如果有重复项,则此处"72C380"出现两次.然后应该只有一个条目,但它们的值应该相加.

期望的输出:

            {value: 20, color: 'F88C00'},
            {value: 40, color: 'D8605F'},
            **{value: 40, color: '72C380'},**
            {value: 20, color: '2C7282'}
Run Code Online (Sandbox Code Playgroud)

我知道如何在python中做到这一点,但不知道JS

Aru*_*hny 8

你可以像这样使用临时地图

var array = [{
    value: 20,
    color: 'F88C00'
}, {
    value: 40,
    color: 'D8605F'
}, {
    value: 20,
    color: '72C380'
}, {
    value: 20,
    color: '2C7282'
}, {
    value: 20,
    color: '72C380'
}];

var op = [],
    map = {}, it, item;
for (var i = 0; i < array.length; i++) {
    it = array[i];
    item = map[it.color];
    if (item) {
        item.value += it.value;
    } else {
        map[it.color] = item = {
            value: it.value,
            color: it.color
        };
        op.push(item);
    }
}
console.log(op)
Run Code Online (Sandbox Code Playgroud)

演示:小提琴