数组操作 - lodash或下划线js

时间:2015-05-18 07:24:32

标签: node.js underscore.js lodash

我需要在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功能,但这对我没用。所以我没有太多示例代码可供展示。如果有人帮我找到解决方案,那将会很有帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

Cou可以试试这个:

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;
}

答案 1 :(得分:0)

您应该使用groupBy()重新访问。我只是在您的输入示例上尝试了它,它会产生您想要的确切输出:

_.groupBy(array, 'type');