1. 枚举多维数组路径
function isObject(value) {
return Object.prototype.toString.call(value).split(" ")[1] === "Object]";
}
// 枚举出所有路径
function recursion(data) {
const currentPath = []; //二维数组
Object.keys(data).forEach((key) => {
const val = data[key];
if (isObject(val)) {
const p = recursion(val);
p.forEach((x) => {
currentPath.push([key, ...x]);
});
} else {
currentPath.push([key]);
}
});
return currentPath;
}
测试
const nextData = {
dd: {
xx: "ccc",
ii: { iir: "kiy", ll: 80 },
scsdc: { fr: { xvdf: "ooo" } },
},
};
const ret = recursion(nextData);
console.info(ret);
// 输出:
[ [ 'dd', 'xx' ],
[ 'dd', 'ii', 'iir' ],
[ 'dd', 'ii', 'll' ],
[ 'dd', 'scsdc', 'fr', 'xvdf' ] ]
网友评论