js中N层遍历问题?

下面的数组,不确定有多少数,每层可能还有child,我怎么递归遍历修改所有的数组内容?


let a=[{
  id:1,
  title:'xxx',
  child:[
       {
      id:2,
      title:"xxx"
      child:...
      }
]
}]
阅读 715
3 个回答

初始数据:

let a = [
  {
    id: 1,
    title: 'xxx',
    child: [
      {
        id: 2,
        title: 'xxx',
        child: [
          {
            id: 3,
            title: 'xxx',
            child: [],
          },
        ],
      },
    ],
  },
];

//把title的值修改成1
function modifyTitle(arr) {
  for (let i = 0; i < arr.length; i++) {
    arr[i].title = '1';

    if (Array.isArray(arr[i].child) && arr[i].child.length > 0) {
      modifyTitle(arr[i].child);
    }
  }
}

modifyTitle(a);

console.log(JSON.stringify(a));


[
    {
        "id": 1,
        "title": "1",
        "child": [
            {
                "id": 2,
                "title": "1",
                "child": [
                    {
                        "id": 3,
                        "title": "1",
                        "child": []
                    }
                ]
            }
        ]
    }
]

写个方法自己调用自己就好 一个简单的demo

dealList(list) {
  for (let item of list) {
    item.id = ''
    item.title = ''
    if (item?.child.length > 0) {
      this.dealList(item.child)
    }
  }
}

正常递归修改即可,比如:

function recursiveModify(arr) {
  arr.forEach(item => {
    // 修改属性值,例如:item.newProp = 'newValue'
    if (item.child && item.child.length > 0) {
      recursiveModify(item.child)
    }
  })
}

或许是我没有理解问题,题主想问的是这个吗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题