// 需求:递归获取数据中的所有name
let obj = {
name:'xx',
children:[
{
name:'ff',
age:'11',
children:[{
name:'sss',
age:2222,
children:[{
name:{ss:11},
age:77
}]
}]
},
]
}
//两种数据结构
//数据结构1: object { name, chidren [ ]}
//数据结构2:object [{name, chidren[]},{name,chidren[]}]
复制代码
//方法1 对数据结构1和数据结构2都适用
let getName = (obj)=>{
let isArr = Array.isArray(obj);
let reslut = [];
if(isArr){
obj.forEach(item => {
reslut.push(...getName(item));
});
}else{
reslut.push(obj.name)
if(obj.children){
reslut.push(...getName(obj.children));
}
}
return reslut;
}
console.log(getName(obj))
复制代码
//方法2: 针对数据结构1
let getResult = (data,list=[])=>{
list.push(data.name);
let isArr = Array.isArray(data.children);
if(isArr){
data.children.forEach(item=>{
getResult(item,list)
})
}
return list;
}
console.log(111);
console.log(getResult(obj))
复制代码
//方法3: 使用JSON.stringify API
let names = [];
// console.log(JSON.stringify(obj))
JSON.stringify(obj,(key,value)=>{
if(key==='name') names.push(value)
return value
})
console.log(names)
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END