【发布时间】:2021-12-07 10:21:07
【问题描述】:
我试图生成给定 json 对象的所有可能路径。我如何生成路径,但我希望我的最终数组以扁平方式(最终数组内没有嵌套数组)。 我尝试扩展数组,但最终数组包含一些嵌套数组。我想以更扁平的方式拥有所有元素。
当前操作:
[
"obj",
"level1.level2.level3.key",
[
"arrayObj.one[0].name",
"arrayObj.one[0].point"
]
]
预期:
[
"obj",
"level1.level2.level3.key",
"arrayObj.one[0].name",
"arrayObj.one[0].point"
]
下面我附上了我试过的sn-p。
const allPaths = (obj, path = "") =>
Object.keys(obj).reduce((res, el) => {
if (Array.isArray(obj[el]) && obj[el].length) {
return [...res, ...obj[el].map((item, index) => {
return [...res, ...allPaths(item, `${path}${el}[${index}].`)];
})];
} else if (typeof obj[el] === "object" && obj[el] !== null) {
return [...res, ...allPaths(obj[el], `${path}${el}.`)];
}
return [...res, path + el];
}, []);
const obj = {
obj: 'sample',
level1: {
level2: {
level3: {
key: 'value'
}
}
},
arrayObj: {
one: [{
name: 'name',
point: 'point'
},
{
name: 'name2',
point: 'point2'
},
{
name: 'name2',
point: 'point2'
}
]
}
}
console.log(allPaths(obj));
【问题讨论】:
-
console.log(allPaths(obj).flat());?
标签: javascript json spread