您可以使用递归的方式来实现这个方法。首先,创建一个空数组来存储符合条件的对象。然后,遍历 treeData 数组,对每个对象进行判断。如果对象的 id 属性在 ids 数组中,则将该对象加入结果数组中。如果对象的 children 属性存在且是一个数组,则递归调用该方法来查找子对象。最后,返回结果数组。

以下是实现该方法的代码:

function findObjectsByIds(treeData, ids) {
  let result = [];
  
  for (let i = 0; i < treeData.length; i++) {
    if (ids.includes(treeData[i].id)) {
      result.push(treeData[i]);
    }
    if (treeData[i].children && Array.isArray(treeData[i].children)) {
      result = result.concat(findObjectsByIds(treeData[i].children, ids));
    }
  }
  
  return result;
}

let treeData = [
  { id: 1, name: 'a', children: [{ id: 11, name: 'aa', children: null }, { id: 12, name: 'ab' }] },
  { id: 2, name: 'cc' }
];

let ids = [11, 2];
let objects = findObjectsByIds(treeData, ids);
console.log(objects);

运行以上代码,将会输出符合条件的对象数组:[{ id: 11, name: 'aa', children: null }, { id: 2, name: 'cc' }]

JavaScript 递归查找树形结构数据中的指定对象

原文地址: https://www.cveoy.top/t/topic/qkO4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录