通过键数组访问Javascript(子)对象
是否可以通过键数组在对象中设置变量? 例如,我有一个对象:通过键数组访问Javascript(子)对象,javascript,arrays,object,javascript-objects,Javascript,Arrays,Object,Javascript Objects,是否可以通过键数组在对象中设置变量? 例如,我有一个对象: var obj = {'outer': {'inner': 'value'} }; 并要设置由一组键选择的值: var keys = ['outer', 'inner']; 要获得此结果,请将其添加到新值“newValue”: obj = {'outer': {'inner': 'newValue'} }; 这里的关键点是,可以使用属性名称字符串访问对象属性:obj.propobj[“prop”] 函数SetValueByKeyN
var obj = {'outer': {'inner': 'value'} };
并要设置由一组键选择的值:
var keys = ['outer', 'inner'];
要获得此结果,请将其添加到新值“newValue”:
obj = {'outer': {'inner': 'newValue'} };
这里的关键点是,可以使用属性名称字符串访问对象属性:
obj.prop
obj[“prop”]
函数SetValueByKeyNames(对象、键、值){
var目标=obj;
对于(变量i=0;i
您可以做的是迭代键数组,确保每个键都存在并指向另一个对象,直到到达用于设置新值的最后一个键为止
function setVal(obj, keys, value) {
var o = obj,
len = keys.length;
// iterate through all keys, making sure each key exists and points to an object
for (var i = 0; i < len - 1; i++) {
var key = keys[i];
// check if the current key exists and is an object
if (obj.hasOwnProperty(key) && typeof obj[key] === 'object' && obj[key]) {
o = o[key];
} else {
// return false or throw an error cause the key is not an object or is missing.
}
}
// update the value at the last key
o[keys[len - 1]] = value;
}
功能设置值(对象、键、值){
var o=obj,
len=键。长度;
//遍历所有键,确保每个键都存在并指向一个对象
对于(变量i=0;i
下面是一个运行示例:
功能设置值(对象、键、值){
var o=obj,
len=键。长度;
对于(变量i=0;i 控制台日志(obj)刚刚看到你比我抢先一步,我们的想法是一样的:),+1。得了吧,连一点解释都没有?
function setVal(obj, keys, value) {
var o = obj,
len = keys.length;
// iterate through all keys, making sure each key exists and points to an object
for (var i = 0; i < len - 1; i++) {
var key = keys[i];
// check if the current key exists and is an object
if (obj.hasOwnProperty(key) && typeof obj[key] === 'object' && obj[key]) {
o = o[key];
} else {
// return false or throw an error cause the key is not an object or is missing.
}
}
// update the value at the last key
o[keys[len - 1]] = value;
}