gpt4 book ai didi

javascript - 如何通过字符串访问对象成员?

转载 作者:行者123 更新时间:2023-11-28 18:53:02 25 4
gpt4 key购买 nike

假设我们有一个 javascript 对象

var json = {
abc: 1,
def: 2,
ghi: [3, 4]
};

我们想要访问它的成员,例如给定以下字符串数组

var str_arr = ["json['abc']", "json['ghi'][1]"];

我想在不使用 eval 的情况下获得以下结果(我正在构建 Google Chrome 扩展程序)

var str_res = [1, 4];

这可能吗?我尝试做窗口,但它不起作用(或者可能我不知道如何)。谢谢!

最佳答案

我不建议使用自定义方法迭代整个对象,但如果你确实无法直接访问该对象,你可以使用递归函数并传递你想要打开的键。这可能会给您更多想要的动态感觉。

代码:

function readObjectValue(obj, key, defaultValue) {
function __readObjectValueInternal(obj, keyParts, defaultValue) {
if (!obj.hasOwnProperty(keyParts[0])) {
return defaultValue;
}

var readValue = obj[keyParts[0]];

if (typeof(readValue) !== 'object') {
return readValue;
}

return __readObjectValueInternal(readValue, keyParts.slice(1), defaultValue);
};

return __readObjectValueInternal(
obj,
(typeof(key) === 'string' ? key.split(/\./g) : key),
defaultValue
);
}

用法:

var json = {
abc: 1,
def: 2,
ghi: [3, 4]
};

console.log( readObjectValue(json, 'abc') ); // 1
console.log( readObjectValue(json, 'ghi.1') ); // 4
console.log( readObjectValue(json, 'ghi.2') ); // undefined
console.log( readObjectValue(json, 'ghi.3', null) ); // null
console.log( readObjectValue(json, ['def', 0], null) ); // 2

关于javascript - 如何通过字符串访问对象成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34153180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com