我有一组具有相同属性的对象(任意深度):
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;
});
}
答案 0 :(得分:0)
var array = [],
i;
for(i = 0; i < 4; i++) {
array.push({
'a': '0',
'b': {
'c': '0'
}
});
}
set = function(array, key, value){
for (i = 0; i < array.length; i++){
array[i][key] = value;
}
}
set(array, "test", "Test");
alert(array[0]['test']);
哈,@ Oriol是对的,你的原始功能只是语法错误。