【发布时间】:2022-01-03 16:41:38
【问题描述】:
我想要一个对象数组,其中包含来自嵌套对象的所有对象键。我编写了一个递归函数来执行此操作,但是在调用该函数时,它并没有按预期通过对象,而是无限地发回一个索引。
let array = [];
const findKeys = (ob) => {
let id = 0;
let keys = Object.keys(ob);
for (let i = 0; i < keys.length; i++) {
let object = {
id: id,
label: keys[i],
};
array.push(object);
id ++;
findKeys(ob[keys[i]]);
}
return array;
};
let newArray = findKeys(data);
console.log(newArray);
示例数据结构:
const data = {a: {
b: {
c: {
foo: 'bar'
}
}
}}
【问题讨论】:
-
你的
data看起来怎么样? -
在调用 findKeys 之前没有检查它是否是一个对象似乎很奇怪
-
按照您的编码方式,您将在数组中拥有多个具有相同 id 的元素,因为您不断将 id 重置为零。 .
-
数据是一个包含对象的对象
-
你能提供你的预期结果吗
标签: javascript arrays function object recursion