Рекурсивный цикл, пока мы не закончим с объектом [JS] - PullRequest
0 голосов
/ 17 февраля 2012

Я создаю плагин для Photoshop, который основан на слоях. Чтобы сделать это, мне нужно создать массив с каждым слоем, который возвращает true при прохождении через функцию (проверка имени на совпадения).

Как я мог в основном "рекурсивно" пройти объект и дочерние объекты, пока я не прошел через все? (Помещение «выделенных» элементов в массив в процессе).

Объект - это простой объект javascript с множеством объектов в нем (и еще больше внутри него).

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Как-то так, но пока не хватает множества проверок:

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;
}
1 голос
/ 17 февраля 2012

Попробуйте это:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...