有没有办法动态遍历对象并用例如新对象替换零件?
假设我有这个(非常简化的)对象:
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;
}
答案 0 :(得分:0)
看起来你要比使用findPath函数更复杂。为什么不循环找到你想要的对象并改变它? E.g。
var key = 'jv';
persons.male.forEach(function(p){
if(p.name === key)
p.age++;
});