代码之家  ›  专栏  ›  技术社区  ›  ken.ng

如何将具有相同键的所有值分组到数组中

  •  0
  • ken.ng  · 技术社区  · 6 年前

    首先,如果你觉得这个问题令人困惑,很抱歉。

    [{"6":6.5},{"4":4.2},{"6":6.3}]
    

    我要做的是删除重复的键,但保留这些值,并将它们作为一个数组全部推入一个唯一的键中。这样地:

    [{"6":[6.5, 6.3]}, {"4": 4.2}]
    

    1 回复  |  直到 6 年前
        1
  •  0
  •   Blue    6 年前

    .reduce() 是你想要的:

    var data = [{"6":6.5},{"4":4.2},{"6":6.3}];
    
    var res = data.reduce((rv, obj) => {
      var key = Object.keys(obj)[0];
      
      rv[key] = rv[key] || [];
      rv[key].push(obj[key]);
      
      return rv;
    }, {});
    
    
    console.log(res);

    注:

    var data = [{"6":6.5},{"4":4.2},{"6":6.3}];
    
    var res = data.reduce((rv, obj) => {
      var key = Object.keys(obj)[0];
      
      if (Array.isArray(rv[key])) { // Already is an array
        rv[key].push(obj[key]);
      } else if (rv[key] !== undefined) { // Has a value. Convert to array
        rv[key] = [rv[key], obj[key]];
      } else { // Haven't seen this key yet. Set the value
        rv[key] = obj[key];
      }
      
      return rv;
    }, {});
    
    
    console.log(res);