通过动态遍历来替换对象中的部分

时间:2014-05-01 19:51:18

标签: javascript path traversal

有没有办法动态遍历对象并用例如新对象替换零件?

假设我有这个(非常简化的)对象:

persons = [{ 
    male: [{ name: 'sjv', age: 34 }, { name: 'jv', age: 62 }, { name: 'mlk', age: 28 }] }, { female: [{ name: 'hlk', age: 43 }, { name: 'pj', age: 65 }, { name: 'kj', age: 18 }] 
}]

现在我正在寻找一种方法,可以在运行时轻松快速地更新部分人员对象。我能够想出一条概念上指向我需要改变的部分的路径。

假设我想用路径'persons.female [1] .age'更新属性 你会怎么做?

再次(!)路径是动态的,并在运行时更改。

这是我找到或可以建立路径的方式:

        findPath = function (obj, partialID, path) {
            for (var key in obj) {
                if (typeof obj[key] === 'object') {
                    var tmp  = path + '.' + key;
                    this.findPartial(obj[key], partialID, tmp);
                }
                else if (typeof obj[key] !== 'function' && obj[key] === partialID) {
                    this.path = path;
                }
            }
            return;
        }

1 个答案:

答案 0 :(得分:0)

看起来你要比使用findPath函数更复杂。为什么不循环找到你想要的对象并改变它? E.g。

var key = 'jv';
persons.male.forEach(function(p){
    if(p.name === key)
        p.age++;
});