如何使用数组访问对象并设置值 - 最好不使用 eval,执行类似 object[eval(["key", "deepkey"].split("")) = 的操作“新值”
?
手动执行此操作,我只需执行 object.key.deepkey = "newvalue"
,但同样,我需要使用数组来访问正确的属性。
引用对象:
object = {
key: {
deepKey: "value"
}
}
最佳答案
您可以使用递归函数逐步遍历数组(或对象)的每个级别,如下所示:
function val(array, indices) {
if(indices.length > 1) {
var idx = indices.shift();
return val(array[idx], indices);
}
else {
return array[indices.shift()];
}
}
var obj = { a: { b: 'c' } };
//result is 'c'
var result = val(obj, ['a', 'b']);
如果您想获取对象引用,只需指定第二个参数即可:
var obj = {
a: {
b: {
c: 'foo'
}
}
};
var ref = val(obj, ['a', 'b']);
//ref is now obj.a.b, so you can do something like...
ref.x = 'bar';
console.dir(ref); //outputs something like { c: 'foo', x: 'bar' }
关于javascript - 在javascript中从数组访问对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12882148/