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