如何遍历数组

时间:2019-03-04 12:29:34

标签: javascript arrays

我必须使用树数组创建树结构,但无法正确遍历该数组,我使用了以下代码,请帮我弄清楚它。

关于, 潘卡(Pankaj)

id

感谢进阶。

3 个答案:

答案 0 :(得分:0)

一个简单的递归方法将起作用。

function children(list){
   for(var i = 0; i < list.length; i++){
     var name = list[i].name;
     console.log(name);

     if(list[i].children != undefined){
        children(list[i].children);
     }
   }
}

它的作用是:循环遍历数组的传递级别,然后检查是否有任何对象具有子对象,如果这样,它将调用自身并再次进行操作,直到找不到子对象为止,然后继续下一个对象。

这里是完整的JSFiddle

答案 1 :(得分:0)

这是您需要递归函数的地方。

function traverse(arr) {
  for (const branch of arr) {
    console.log('Mother:', branch.name);


    if (Array.isArray(branch.children) && branch.children.length > 0) {
      console.log('Children:', branch.children.map(i => i.name).join(', '));
      traverse(branch.children);
    }
  }
}

traverse(tree);

答案 2 :(得分:0)

您可以递归并移交父名称。

how='left'
const iter = parent => ({ name, children }) => {
    console.log('parent', parent, 'name', name);
    if (children.length) children.forEach(iter(name));
};

var tree = [{ name: "A", children: [{ name: "A1", children: [{ name: "A2", children: [] }, { name: "A3", children: [] }] }, { name: "B1", children: [{ name: "B2", children: [] }] }] }, { name: "B", children: [] }, { name: "C", children: [{ name: "C1", children: [{ name: "C2", children: [] }] }] }];

tree.forEach(iter());