我的代码:如何包含数组对象转换为对象的对象
function convert(arr, parent) {
var out = [];
for(var i in arr) {
if(arr[i].parent == parent) {
var children = convert(arr, arr[i].id)
if(children.length) {
arr[i].children = children
}
out.push(arr[i])
}
}
return out; //return Object.assign({}, out);tried this, but i lose parents childrens arrays
};
arras = [
{id: 1, name: "parent1", parent: null},
{id: 2, name: "children1", parent: 1},
{id: 3, name: "children2", parent: 1},
{id: 4, name: "parent2", parent: null},
{id: 5, name: "children3", parent: 4},
{id: 6, name: "children4", parent: 4}
]
console.log(convert(arras, null));
如何最终的结果应该
{
parent1: [
{name: "children1"},
{name: "children2"}
],
parent2: [
{name: "children3},
{name: "children4"}
]
}
我的输出看起来是什么至今:
[
{id: 1, name: "parent1", parent: null}: [
{id: 2, name: "children1", parent: 1},
{id: 3, name: "children2", parent: 1},
],
{id: 4, name: "parent2", parent: null}: [
{id: 5, name: "children3", parent: 4},
{id: 6, name: "children4", parent: 4}
]
]
所以首先,我必须做的是将主数组转换为对象,当我倾向于这样做时,我失去了两个父对象数组......还需要更改方式控制台显示对象,任何帮助表示赞赏。
功能那种无法处理这个没有一个父ID子ID,分配所有无与伦比的孩子的名字到一个数组'arras.undefined'这是不是一个好名字属性。此外,这些孩子的父母身份证在这个过程中会丢失,这将是一个重大失败。 – Blindman67
@ Blindman67如果输入数据将包含没有hape属性“parent”的记录,则您注意是正确的。但对我来说,它只是错误的输入数据 –