如何在Javascript中使用递归函数时读取对象的属性

How to read an object's properties while using a recursive function in Javascript?

本文关键字:读取 取对象 属性 递归函数 Javascript      更新时间:2023-09-26

我想知道是否有人能给我指出正确的方向。当我有一个对象时,我通常通过FOR IN LOOP读取它的属性。因为我知道属性是什么因为我创建了对象,我知道键和它们的值是什么。我想知道是否有任何其他的方法,如递归的方法来读取对象及其属性。

下面是一个例子的对象:

var mObj = {};
mObj.mArr = [];
mObj.mArr.push({id:['id1','id2','id3']});
mArr.push({days:['Monday','Tuesday','Wednesday','Thursday']});
mObj.mArr.push({colors:['orange','red','blue','green','yellow','white']});

正如你所看到的,我已经声明了mObj,并在其中声明了mArr作为数组。然后在mArr:

内推入三个对象
  1. id
  2. <
  3. 天/gh>颜色

如果我想知道mArr的长度,我会这样写:

alert(mObj.mArr.length);

如果我想循环遍历这个对象,我就写成这样:

for(var a in mObj.mArr[0])
{
   alert(mObj.mArr[0][a]);
}

我想知道我是否可以只是正确的一个函数,并传递父对象,碰巧是"mObj"在这里,这个递归函数将通过"mObj",并列出它的所有属性从头到脚。

我将感谢您对此的任何建议。

这是一个基本的示例:

var mObj = {};
mObj.mArr = [];
mObj.mArr.push({id:['id1','id2','id3']});
mObj.mArr.push({days:['Monday','Tuesday','Wednesday','Thursday']});
mObj.mArr.push({colors:['orange','red','blue','green','yellow','white']});
function r(obj) {
    if (obj)
        for (var key in obj) {
            if (typeof obj[key] == "object")
                r(obj[key]);
            else if (typeof obj[key] != "function")
                console.log(obj[key])
        }
    return;
} 
r(mObj);

如果对象不是函数,则再次调用该函数,否则console记录非函数的值