使用包含最大值的相同项筛选嵌套数组

时间:2017-08-22 07:07:15

标签: javascript arrays object filter

如何根据'a'中的相同'a'和max'值'过滤此数组?

   data = [
             {a: 1, value: 12}, {a: 11, value: 39}, {a: 11, value: 150},
             {a: 2, value: 15}, {a: 22, value: 83}, {a: 222, value: 12},
             {a: 3, value: 55}, {a: 33, value: 9}, {a: 33, value: 1}
           ]

成为

data = [
         {a: 1, value: 12}, {a: 11, value: 150},
         {a: 2, value: 15}, {a: 22, value: 83}, {a: 222, value: 12},
         {a: 3, value: 55}, {a: 33, value: 9}, 
       ]

我有一个带有对象阵列的植物,我不能过滤它,同样的id有不同的价值我只想在它上面显示最高的

1 个答案:

答案 0 :(得分:1)

您可以将结果集的索引存储在哈希表中,并检查实际值是否更大,然后将实际对象作为结果。



var data = [{ a: 1, value: 12 }, { a: 11, value: 39 }, { a: 11, value: 150 }, { a: 2, value: 15 }, { a: 22, value: 83 }, { a: 222, value: 12 }, { a: 3, value: 55 }, { a: 33, value: 9 }, { a: 33, value: 1 }],
    hash = Object.create(null),
    result = [];
    
data.forEach(function (o) {
    if (!(o.a in hash)) {
        hash[o.a] = result.push(o) - 1;
        return;
    }
    if (result[hash[o.a]].value < o.value) {
        result[hash[o.a]] = o;
    }
});

console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;