如何将带有嵌套子代的 JSON 转换为包含 parent_id 的数组,谢谢!
var json = {
id: "1",
name: "loreim ipsum",
data: {},
children: [{
id: "2",
name: "lorem ipsum1",
data: {},
children: [{
id: "3",
name: "lorem ipsum2",
data: {},
children: [{
..............
到这样的数组
array(
array('id' => 1, 'parent_id' => null, 'name' => 'lorem ipsum'),
array('id' => 2, 'parent_id' => 1, 'name' => 'lorem ipsum1'),
array('id' => 3, 'parent_id' => 1, 'name' => 'lorem ipsum2'),
array('id' => 4, 'parent_id' => 2, 'name' => 'lorem ipsum3'),
array('id' => 5, 'parent_id' => 3, 'name' => 'lorem ipsum4'),
array('id' => 6, 'parent_id' => null, 'name' => 'lorem ipsum5'),
);
答案 0 :(得分:0)
递归构建平面数组-
var json = {
id: "1",
name: "loreim ipsum",
data: {},
children: [{
id: "2",
name: "lorem ipsum1",
data: {},
children: [{
id: "3",
name: "lorem ipsum2",
data: {},
children: [{
id: "4",
name: "lorem ipsum2",
data: {}
}]
},
{
id: "5",
name: "lorem ipsum2",
data: {},
children: [{
id: "6",
name: "lorem ipsum2",
data: {}
}]
}
]
}]
}
function flat(array, parentId) {
var result = [];
array.forEach(function(a) {
var newObject = Object.assign({}, a);
delete newObject.children;
newObject.parent_id = parentId;
result.push(newObject);
if (Array.isArray(a.children)) {
result = result.concat(flat(a.children, a.id));
}
});
return result;
}
console.log(flat([json], null));