这可以通过使用Underscore或Lo-Dash来解决。使用它们,我已经接近我想要的解决方案,但还不够接近。而且我已经接近在stackoverflow上找到解决方案,但似乎没有人能够得到我正在追求的东西。这是原始对象的再现,然后是对象,因为它可能会根据内部键的值重新创建。
原始
{
"muppets": [
{
"number": {
"value": "one"
},
"name": "Fozzie"
},
{
"number": {
"value": "two"
},
"name": "Kermit"
},
{
"number": {
"value": "one"
},
"name": "Rowlf"
}
]
}
需要什么
{
"muppets": [
{
"one": [
{
"number": {
"value": "one"
},
"name": "Fozzie"
},
{
"number": {
"value": "one"
},
"name": "Fozzie"
}
]
},
{
"two": [
{
"number": {
"value": "two"
},
"name": "Kermit"
}
]
}
]
}
提前致谢。
答案 0 :(得分:2)
这应该这样做:
obj.muppets = _.map(_.groupBy(obj.muppets, function(m) {
return m.number.value;
}), function(a, g) {
var o={}; o[g]=a; return o;
});
请注意,不保证新的muppets
数组按任何顺序排序。