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

标签 javascript

我想知道是否有人可以指出我在这方面的正确方向。当我有一个对象时,我通常通过 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. 编号
  2. 颜色

如果我想找出 mArr 长度,我会这样写:

alert(mObj.mArr.length);

如果我想遍历这个对象,我会有这样的东西:

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

我想知道我是否可以只对一个函数并在这里传递恰好是“mObj”的父对象,并且这个递归函数将通过“mObj”并从头到脚列出其所有属性。

如有任何意见,我将不胜感激。

非常感谢。

最佳答案

这是一个基本的 example :

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);

如果存在一个不是函数的对象,则再次调用该函数,否则如果它不是函数,则控制台记录该值。

关于javascript - 在 Javascript 中使用递归函数时如何读取对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7102182/

相关文章:

javascript - 使用 Javascript 中的字符对数组进行排序

javascript - 日期选择器上的 Material UI 自定义文本字段

javascript - Crossrider - 如何触发页面中用户事件的事件?

javascript - 使用 Chai 匹配 JSON 对象数组中的数组元素

javascript - 在 symfony2 中使用 assetic 进行源映射

javascript - Promise.all 从 .then() 回调返回时无法正常工作

JavaScript 解密函数

javascript - Object.assign() 用于替换 json 的对象

javascript - 如何使用 javascript 调整 Base64 编码的数据 URI PNG 的大小?

javascript - 用图像替换文本会调用 "IE has restricted this page from running scripts or ActiveX"