Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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中使用递归函数时,是否设置属性?_Javascript - Fatal编程技术网

如何读取对象';在Javascript中使用递归函数时,是否设置属性?

如何读取对象';在Javascript中使用递归函数时,是否设置属性?,javascript,Javascript,我想知道是否有人能给我指出正确的方向。当我有一个对象时,我通常通过FOR IN循环读取它的属性。因为我创建了这个对象,所以我知道属性是什么,我知道键和它们的值是什么。我想知道是否还有其他方法,如递归方法来读取对象及其属性 下面是一个示例对象: var mObj = {}; mObj.mArr = []; mObj.mArr.push({id:['id1','id2','id3']}); mArr.push({days:['Monday','Tuesday','Wednesday','Thursd

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

下面是一个示例对象:

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中推三个对象:

  • 身份证
  • 日子
  • 颜色
  • 如果我想知道mArr的长度,我会这样写:

    alert(mObj.mArr.length);
    
    如果我想在对象中循环,我会有这样的东西:

    for(var a in mObj.mArr[0])
    {
       alert(mObj.mArr[0][a]);
    }
    
    我想知道我是否可以正确地调用一个函数,并在这里传递恰好是“mObj”的父对象,这个递归函数将通过“mObj”并从头到脚列出它的所有属性

    如果您对此有任何意见,我将不胜感激

    非常感谢。

    这里有一个基本的:


    如果有一个对象不是函数,请再次调用该函数,否则控制台将记录该值(如果它不是函数)。

    是,这是可能的。你到底有什么问题?为什么不直接用文字符号写出完整的对象?当你说“列出它的所有属性”时,你是指没有实际用途的字符串输出吗?如果您这样做了,那么只需将对象序列化为JSON。一个函数,递归的,已经编写的,并且输出很好(尽管如果对象的任何属性是函数,它可能会出现问题)。请阅读:还有。Felix,还有时间,我正在从服务器端捕获不是我编写的对象,我只是想把所有的细节都打印出来…更像是有一个实用功能,它可以把刚刚处理过的东西吐出来。乔伊…你说得对。我对你感激不尽。我明天会把它插上,看看我能想出什么,但到目前为止,它似乎是我一直在寻找的。非常感谢没问题,请务必接受一些答案,尽管这里已经解释过了:meta.stackoverflow.com/questions/16721/Joe-非常感谢。我对递归没有太多的经验,它有融化我大脑的倾向,但这绝对是解决我问题的完美空白板!
    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);