Javascript 递归循环直到我们';重新处理对象[JS]

Javascript 递归循环直到我们';重新处理对象[JS],javascript,object,recursion,Javascript,Object,Recursion,我正在为Photoshop构建一个基于层的插件。为此,我需要为每个层构建一个数组,在执行函数时返回true(检查名称是否匹配) 我怎样才能基本上“递归地”遍历对象和子对象,直到遍历完所有内容(在过程中将“选定”项放入数组中) 对象只是一个普通的javascript对象,其中包含大量的对象(还有更多的对象)。尝试以下方法: var isASelectedLayer = function(element) { ... } var objectWithLayers = {...} var s

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

我怎样才能基本上“递归地”遍历对象和子对象,直到遍历完所有内容(在过程中将“选定”项放入数组中)

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

尝试以下方法:

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

类似这样的东西,但目前它缺少很多支票:

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

问题是你通常不熟悉递归并想知道如何做?我不得不说是的-我真的不知道如何做。你是否尝试过在StackOverflow上搜索答案?我快速搜索了一下,发现了很多类似的问题。