Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS唯一标识嵌套对象属性_Javascript_Oop - Fatal编程技术网

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)会导致无限循环,最终会导致堆栈溢出。可以使用额外的代码来防止这种情况。