递归循环,直到我们完成对象[JS]

时间:2012-02-17 16:42:39

标签: javascript object recursion

我正在构建一个基于图层的Photoshop插件。为此,我需要构建一个数组,每个图层在通过函数时返回true(检查匹配的名称)。

我怎么能基本上“递归地”通过对象和子对象,直到我经历过一切? (在过程中将“选定”项放入数组中)。

该对象只是一个普通的javascript对象,其中包含大量对象(还有更多的对象)。

2 个答案:

答案 0 :(得分:1)

试试这个:

var isASelectedLayer = function(element) {
    ...
}
var objectWithLayers = {...}

var selected = [];
var lookForSelectedLayers = function(o) {
    for(element in o) {
        if(isASelectedLayer(o[element]))
            selected.push(o[element]);
        else
            lookForSelectedLayers(o[element]);
    }
};
lookForSelectedLayers(objectWithLayers);

答案 1 :(得分:1)

这样的东西,但它现在缺少很多检查:

function showProperties(object, prefix) {
    if (typeof prefix == "undefined") prefix = "";
    var result = ""
    for (property in object) {
        result += prefix + property+"="+object[property]+" "+typeof object[property]+"\n";
        if (typeof object[property] == "object") {
            result += showProperties(object[property], prefix+"  ");
        }
    }
    return result;
}