Javascript JS唯一标识嵌套对象属性
我有一个嵌套对象,如:Javascript JS唯一标识嵌套对象属性,javascript,oop,Javascript,Oop,我有一个嵌套对象,如: var nested = { k: 1, j: { i: 1, k: 0 }, o: function(a, bc) {}, p: { k: 0, p: { py: 0, kg: 8 } } } 我尝试循环它,并从0到
var nested = {
k: 1,
j: {
i: 1,
k: 0
},
o: function(a, bc) {},
p: {
k: 0,
p: {
py: 0,
kg: 8
}
}
}
我尝试循环它,并从0到n
的每个属性生成一个唯一标识符,其中n
是var嵌套
对象的属性总数。鉴于上述var嵌套
,我期望类似于:
var nested = {
k: 1, -> (0)
j: { -> (1)
i: 1, -> (2)
k: 0 -> (3)
},
o: function(a, bc) {}, -> (4)
p: { -> (5)
k: 0, -> (6)
p: { -> (7)
py: 0, -> (8)
kg: 8 -> (9)
}
}
}
如果更简单,那么我想计算一个(嵌套的)对象有多少属性,并记录每个属性及其索引。我将用一个代码原型更新这个问题您可以像对待属性树一样对待属性。 根是嵌套的 根:嵌套 二级:(k、j、o、p) ..... 然后可以使用来遍历此属性树
您可以使用访问属性这里有一种迭代嵌套对象/数组的方法。您可以使用传递给回调函数的生成路径作为唯一标识符,也可以在运行时迭代回调函数中的计数器,或者创建任何类型的标识符
函数迭代属性(obj、fn、path){
var newPath,prop,i;
路径=路径| |“顶部”;
if(数组isArray(obj)){
对于(变量i=0;i
预期结果是什么?不太清楚你想做什么…或者为什么?这些标识符的用例是什么?另外,请显示您已尝试的内容如果更简单,我想计算一个(嵌套)对象有多少属性,以及console.log
每个属性及其索引。我将用一个代码原型更新这个问题。像nested.p.p.kg
这样的标识符效果最好。非常感谢。我想知道循环引用有什么问题?@ValeriuMazare-某些类型的循环引用(其中child指的是parent)会导致无限循环,最终会导致堆栈溢出。可以使用额外的代码来防止这种情况。