【问题标题】:Array manipulation - lodash or underscore js数组操作 - lodash 或下划线 js
【发布时间】:2015-05-18 07:24:32
【问题描述】:

我需要更改以 lodash 或下划线表示的数组格式:

[
    {
        name: "john",
        type: "facebook"
    },
    {
        name: "Mike",
        type: "facebook"
    },
    {
        name: "Jacob",
        type: "twitter"
    },
    {
        name: "Nancy",
        type: "twitter"
    },
    {
        name: "Antony",
        type: "facebook"
    },
    {
        name: "Viki",
        type: "linkedin"
    }
]

需要将上面的数组转换为对象,如下

{
    facebook: [
        {
            name: "john",
            type: "facebook"
        },
        {
            name: "Mike",
            type: "facebook"
        },
         {
            name: "Antony",
            type: "facebook"
        }
    ],
    twitter: [
         {
            name: "Jacob",
            type: "twitter"
        },
        {
            name: "Nancy",
            type: "twitter"
        }
    ],
    linkedin: [
        {
            name: "Viki",
            type: "linkedin"
        }
    ] 
}

我已经尝试过groupBy 功能,但这对我不起作用。所以我没有太多的示例代码可以展示。如果有人帮助我找到解决方案,那将是很大的帮助。谢谢你。

【问题讨论】:

    标签: node.js underscore.js lodash


    【解决方案1】:

    你可以试试这个:

    function manipulate(yourArray) {
      var res = {}
      for (var i=0; i<yourArray.length; i++) {
        if (!res.hasOwnProperty(yourArray[i].type)){
          res[yourArray[i].type] = []
        }
        res[yourArray[i].type].push(yourArray[i])
      }
      return res;
    }
    

    【讨论】:

      【解决方案2】:

      您应该使用groupBy() 重新访问。我刚刚在您的输入样本上进行了尝试,它会产生您想要的确切输出:

      _.groupBy(array, 'type');
      

      【讨论】:

        猜你喜欢
        • 2015-05-13
        • 2023-03-28
        • 2021-01-06
        • 2015-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多