本周开发中用到了一个递归,用来获取多层嵌套对象。现整理一下。
// data
recursionData: {
name: "小明",
children: {
name: "小红",
relation: "情侣",
children: {
name: "小蓝",
relation: "同学",
children: {
name: "小绿",
relation: "同学"
}
//......更多的对象
}
}
}demoFunc() {
let arr = []
// 定义递归函数 里面的参数datas就是我们每次调用要处理的对象
function rabbit(datas) {
// 使用for in遍历对象
for (let key in datas) {
// 如果它里面的children还是对象的话,就再调用一次这个函数
if (typeof datas.children == "object") {
// 递归,这里的调用传入的参数都是每一层的children对象
rabbit(datas.children);
}
arr.push({
name: datas.name
});
// 跳出循环,避免重复push
break;
}
}
rabbit(this.recursionData); //首次执行该递归方法,传入需要递归的数据
console.log(arr,'---arr')
}结果:

除了用for in遍历对象,还可以用if作为判断条件
demoFunc() {
let arr = []
// 定义递归函数 里面的参数datas就是我们每次调用要处理的对象
function rabbit(datas) {
//判断datas是否存在children,有则再次执行,并返回当前name
if(datas.children) {
rabbit(datas.children);
arr.push({
name: datas.name
});
}else {
arr.push({
name: datas.name
});
}
}
rabbit(this.recursionData); //这很重要!!!
console.log(arr,'---arr')
}结果:

node版本问题
项目需用npm装插件,由于node版本过高的原因,报错。然后捣鼓了半天,才在mac上把版本降下来。用sudo n 版本号,这个没有问题,但要先断开brew对node的链接。
node降到16.15.1后,再运行,还是报错。
然后想了想,是不是npm装不上去,用了yarn,好了,装上去了。然后npm运行,报错

继续搜,删了node_modules ,执行npm install --save core-js和npm install 都不行。换用yarn install也不行。
然后又搜,搞半天,根据报错,可能是less或者less-loader版本过高的问题

执行以下命令
npm install less less-loader --save-dev --force
没报错。最后可以运行了。
本文介绍了一种使用递归函数来遍历和处理多层嵌套对象的方法,并提供了两种不同的实现方式。一种是通过for...in循环进行遍历,另一种是使用if条件判断进行递归。
1148

被折叠的 条评论
为什么被折叠?



