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