马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
要查询并返回id为222的对象数据中parentId为7对应的对象的父节点数据,我们须要遍历整个data数组,找到id为222的对象,并从其父节点中提取信息。由于您提供的data数组中的对象格式存在问题(比方,对象的键值对应该用花括号{}包围),我将先帮您修正格式,然后提供查询的代码。
修正后的data数组格式如下:
- const data = [
- {
- "id": 1,
- "name": "常用指标",
- "parentId": 0,
- "signalTypeIds": "",
- "harmonicTimes": "",
- "children": [
- {
- "id": 7,
- "name": "相电压",
- "parentId": 1,
- "signalTypeIds": {
- "0": 1,
- "1": 94,
- "2": 161,
- "3": 228,
- "4": 295
- },
- "harmonicTimes": "",
- "children": [
- {
- "children": undefined,
- "harmonicTimes": "",
- "id": 222,
- "label": "A相",
- "name": "A相",
- "parentId": 7,
- "signalTypeIds": { "0": 1, "1": 94, "2": 161, "3": 228, "4": 295 },
- "value": "A相"
- }
- ]
- }
- ]
- },
- {
- "id": 3,
- "name": "电压电流功率",
- "parentId": 0,
- "signalTypeIds": "",
- "harmonicTimes": "",
- "children": [
- {
- "id": 4,
- "name": "相电压",
- "parentId": 3,
- "signalTypeIds": {
- "0": 1,
- "1": 94,
- "2": 161,
- "3": 228,
- "4": 295
- },
- "harmonicTimes": "",
- "children": []
- }
- ]
- }
- ];
复制代码 如今,我们可以使用以下递归函数来查询并返回id为222的对象的父节点数据:
- function findParentNodeById(id, data) {
- for (const item of data) {
- if (item.children) {
- for (const child of item.children) {
- if (child.children) {
- // 递归搜索孙节点
- const result = findParentNodeById(id, child.children);
- if (result) return result; // 如果在孙节点中找到,返回结果
- } else if (child.id === id) {
- // 找到id为222的对象,返回其父节点
- return child;
- }
- }
- }
- }
- return null; // 如果没有找到,返回null
- }
- const parentNode = findParentNodeById(222, data);
- console.log(parentNode); // 这将输出id为222的对象的父节点数据
复制代码 这段代码界说了一个findParentNodeById函数,它担当两个参数:要搜索的id和要搜索的数组。函数内部,它遍历提供的数组及其全部子数组,查找id为指定值的对象。当找到id为222的对象时,它返回该对象的父节点数据。如果没有找到匹配的对象,函数返回null。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |