-
12345678_0001
你可以使用一个函数来递归遍历对象结构,就像这里描述的那样:const opts = [ { value: '01', children: [ { value: '0198' }, { value: '0195', children: [{ value: '09977' }] } ] }, { value: '02', children: [ { value: '01986' }, { value: '0195', children: [ { value: '09978', children: [{ value: '09864' }, { value: '90876' }] } ] } ] }];function eachRecursive(obj, cb) { for (var k in obj) { if (typeof obj[k] == "object" && obj[k] !== null) eachRecursive(obj[k], cb); else cb(obj[k]); }}let results = [];eachRecursive(opts, val => results.push(val));console.log(results);但不确定你的评论是什么意思:// expected get an array ['02','0195','0997','90876']你能解释一下你为什么期望吗?
-
汪汪一只猫
你可以使用dfs算法function dfs(o, target){ if(o.value == target) return [target]; if(!o.children) return false; let path; o.children.find(x=>path=dfs(x, target)); if(path){ return [o.value].concat(path); }};const opts = [ { value: '01', children: [ { value: '0198' }, { value: '0195', children: [{ value: '09977' }] } ] }, { value: '02', children: [ { value: '01986' }, { value: '0195', children: [ { value: '09978', children: [{ value: '09864' }, { value: '90876' }] } ] } ] }];let path;opts.find(x=>path=dfs(x, '90876'))console.log(path);
-
慕仙森
const opts = [ { value: '01', children: [ { value: '0198' }, { value: '0195', children: [{ value: '09977' }] } ] }, { value: '02', children: [ { value: '01986' }, { value: '0195', children: [ { value: '09978', children: [{ value: '09864' }, { value: '90876' }] } ] } ] }];console.log(opts[1].value)console.log(opts[1].children[1].value)console.log(opts[1].children[1].children[0].value)console.log(opts[1].children[1].children[0].children[1].value)