【问题标题】:Filter Nested Array with Same Item That Contain Higest Value过滤具有包含最高值的相同项的嵌套数组
【发布时间】:2017-08-22 07:07:15
【问题描述】:

如何根据相同的“a”和“a”中的最大“值”过滤此数组

   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 具有不同的值,我只想在上面显示最高值

【问题讨论】:

    标签: javascript arrays object filter


    【解决方案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);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 1970-01-01
      • 2021-12-13
      • 2020-06-30
      • 2021-06-17
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      相关资源
      最近更新 更多