javascript - 在javascript中从数组访问对象?

标签 javascript arrays object recursion

如何使用数组访问对象并设置值 - 最好不使用 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/

相关文章:

javascript - HTML 在整个 div 上绘制垂直线

javascript - 按特定路径/xpath下不包含 "X"的类删除div

javascript - trim 输入中值的空白

c++ - 在函数中访问类的数组

javascript - 检索对象项的路径

javascript - 如何修改使用 React Router 作为 props 发送的路由参数?

c - 如何以随机顺序访问 C 数组以确保所有元素最多访问一次

PHP 无法读取 AJAX 发送的数组

javascript - Firefox 17 报告使用 "typeof"时将 DOM 元素 (HTMLObjectElement) 创建为函数

javascript - 如何使用push方法或类似方法在javascript中构造一个对象而不是数组对象