0
我有对象的数组(任意深度的)具有相同属性:在对象的数组更改属性
var array = [],
i;
for(i = 0; i < 4; i++) {
array.push({
'a': '0',
'b': {
'c': '0'
}
});
}
我想的功能设置为特定值的属性在像这样的所有对象:
// only to demonstrate, doesn't actually work!
function set(array, attribute, value) {
array.forEach(function(obj) {
obj[attribute] = value;
});
}
为了能够使用这样的(或类似):
set(array, 'a', 1);
set(array, 'b.c', 5);
如果你无法理解我的问题,请帮我澄清一下。先谢谢你!
解决方案
我解决了它,但无法发布一个答案所以在这里,它是:
function set(array, attribute, value) {
// a.b.c => [a, b, c]
attribute = attribute.split('.');
array.forEach(function(obj) {
// obj = array[index]
for (i = 0; i < attribute.length - 1; i++) {
// i = 0) obj = array[index].a
// 1) obj = array[index].a.b
obj = obj[attribute[i]];
}
// array[index].a.b.c = value
obj[attribute[i]] = value;
});
}
那么你面临的问题是什么? – mithunsatheesh 2014-09-24 17:14:57
重复的http://stackoverflow.com/q/13719593/1529630 – Oriol 2014-09-24 18:02:02
我无法发布答案,所以我现在就把我的解决方案放在问题中。 – 2014-09-24 20:58:59