【发布时间】:2014-09-24 17:11:42
【问题描述】:
我有一组具有相同属性的对象(任意深度):
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;
});
}
【问题讨论】:
-
那么您面临的问题是什么?
-
我无法发布答案,所以我现在将我的解决方案放在问题中。
标签: javascript arrays javascript-objects