Javascript 从一个令人兴奋的节点重新构建json
我有一个当前的JSON,看起来像这样Javascript 从一个令人兴奋的节点重新构建json,javascript,arrays,json,node.js,Javascript,Arrays,Json,Node.js,我有一个当前的JSON,看起来像这样 { "_id": "5371f7171b27d11418bd9b46", "name": "a", "length": 14 }, { "_id": "5371f7171b27d1143bd9b46", "name": "ab", "length": 3 } 我想让它看起来像这个 5371f7171b27d1141
{
"_id": "5371f7171b27d11418bd9b46",
"name": "a",
"length": 14
},
{
"_id": "5371f7171b27d1143bd9b46",
"name": "ab",
"length": 3
}
我想让它看起来像这个
5371f7171b27d11418bd9b46: {
name: "a",
length: 14,
toc: [] // in the future it will be in the json I get.
},
5371f7171b27d1143bd9b46: {
name: "ab",
length: 3,
toc: []
}
这就是我试过的
var arrenged = {};
_.forEach(result, function(item) {
arrenged[item._id] = arrenged[item._id] || {};
arrenged[item._id][item.name] = arrenged[item._id][item.name] || {};
arrenged[item._id][item.name].push(item);
arrenged[item._id]['direction'] = 'rtl';
arrenged[item._id]['toc'] = "[]";
});
res.jsonp(arrenged);
但我得到了TypeError:Object#没有“push”方法,不确定我做错了什么。
谢谢 我们可以做:
var newObject = {};
for (var i = 0; i < data.length; i++) { //data is your current array of objects
var id = data[i]._id;
newObject[id] = {};
newObject[id].name = data[i].name;
newObject[id].length = data[i].length;
newObject[id].toc = [];
}
var newObject={};
对于(var i=0;i
小提琴手:好吧,我试过你这样做,但我没能把它弄出来want@greW--删除此行:
arrenged[id]=id代码>@growth——我发布了一个演示小提琴。嗯,不是我得到的:无法设置的属性“name”undefined@greW--我更新了答案,我忘记了一行-newObject[id]={}代码>