【发布时间】:2018-08-16 19:31:41
【问题描述】:
试图创建一个返回对象键数组的函数,包括嵌套在其中的对象。我的代码如下所示:
function keyCount(obj, arr) {
if (arr == undefined){
arr = []
}
let keys = Object.keys(obj);
let length = keys.length;
for (i = 0; i <= length; i++){
if (Object.keys(obj)[i] !== undefined){
arr.push(Object.keys(obj)[i]);
}
}
for (i = 0; i <= length; i++){
if (typeof(obj[Object.keys(obj)[i]]) === "object" && obj[Object.keys(obj)[i]] !== null && Object.keys(obj)[i] !== undefined){
let nestedobj = obj[Object.keys(obj)[i]];
keyCount(nestedobj,arr)
}
}
return (arr);
}
这将返回第一级键和一个嵌套对象的键,但在第一次递归调用后退出函数。有没有办法解决这个问题或更好的方法来格式化代码?提前致谢!
编辑: 数据预期:
let obj1 = {
1:"a",
2:{
3: "b",
4: "c"},
5:{
6:"d",
7: "e",
8: {
9: "f",
10: "g"},
11:{
12:"h",
13: "i"
}
}
};
应该返回:
[1,2,5,3,4,6,7,8,9,10,11,12,13]
但只返回:
[1,2,5,3,4]
【问题讨论】:
-
@Durga 在这里他只要求钥匙,该问题在问题主题中具有其他含义。
-
请添加一些数据和想要的结果。
-
检查@Durga提到的链接
-
你真的不应该重复调用
Object.keys(obj)。这就是您创建let keys变量的目的!
标签: javascript object recursion nested