【问题标题】:Trouble formatting json objects with lodash _.groupBy使用 lodash _.groupBy 格式化 json 对象时遇到问题
【发布时间】:2017-08-25 18:43:59
【问题描述】:

我在重新格式化对象以便按列表分组时遇到问题。

// input 
{
    'M': [
        {name: Bob, id: 1},
        {name: John, id: 2},
        {name: John, id: 3},
    ],
    'F': [
        {name: Liz, id: 4},
        {name: Mary, id: 5},
        {name: Mary, id: 6},
    ]
}

// desired output
{
    'M': [
        'Bob': [ {name: Bob, id: 1},]
        'John': [ {name: John, id: 2}, {name: John, id: 3} ]
    ],
    'F': [
        'Liz': [ {name: Liz, id: 4} ]
        'Mary': [ {name: Mary, id: 5}, {name: Mary, id: 6} ]
    ]
}

我当前的脚本只返回“M”键,我不是导致它的原因

for (var key in obj) {
    var data = _.groupBy(obj[key], 'name')
    return data;
}

我也试过了

  Object.keys(obj).forEach(obj, key => {
    var data = _.groupBy(obj[key], 'name')
    return data;
  }) 

但它会抛出TypeError: #<Object> is not a function

【问题讨论】:

    标签: json ecmascript-6 lodash


    【解决方案1】:

    使用 _.forOwn 因为你想迭代它自己的属性。

    _.forOwn(obj, function(key, val) {
        var ret = {};
        ret[key] = _.groupBy(val, 'name');
        return ret;
    });
    

    【讨论】:

      【解决方案2】:

      您可以使用mapValues 通过groupBy 将每个性别组按名称分组。

      var output = _.mapValues(input, names => _.groupBy(names, 'name'));
      

      var input = {
          'M': [
              {name: 'Bob', id: 1},
              {name: 'John', id: 2},
              {name: 'John', id: 3},
          ],
          'F': [
              {name: 'Liz', id: 4},
              {name: 'Mary', id: 5},
              {name: 'Mary', id: 6},
          ]
      };
      
      var output = _.mapValues(input, names => _.groupBy(names, 'name'));
      
      console.log(output);
      body > div { min-height: 100%; top: 0; }
      <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        • 2014-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多