javascript - 如何在 JavaScript 中使用对象的字符串参数?

标签 javascript javascript-objects

示例:

var v1 = "['a']";
var v2 = "['b']['c']";
var obj = {a: 'a', b: {c: "['b']['c']"}};

是否可以像“obj”的方法一样使用“v1”或“v2”?我需要它作为 API,因为我不知道应该解析什么。它可以是 obj['a'] 或 obj['b']['c']。有什么解决办法吗?

最佳答案

这是我所说的一个示例,使用解析字符串输入并查找相应元素的函数来扩展对象。

这里需要注意的是,我懒于处理引号,因此您需要稍微调整一下才能处理单引号和双引号。我没有进行广泛的测试,但我认为当对象中没有匹配项时它会返回未定义。

var v1 = "['a']";
var v2 = "['b']['c']";
var obj = {
  getByStr: function(str) {
    var args = str.replace("['", '').replace(new RegExp("'\]" + '$'), '').split("']['");
    var match = this[args.shift()];
    while(match !== undefined && args.length > 0)
      match = match[args.shift()];
    return match;
  },
  a: 'a',
  b: {
    c: "['b']['c']"
  }
};

document.write('v1 -- ' + obj.getByStr(v1) + '<br />');
document.write('v2 -- ' + obj.getByStr(v2) + '<br />');

如果您认为您可能会使用它,但其中有任何您不明白的内容,请发表评论,我会添加一些说明。

关于javascript - 如何在 JavaScript 中使用对象的字符串参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34722428/

相关文章:

javascript - 有没有办法找出正在尝试访问的对象的哪个键?

javascript - 尝试让 pagedown Bootstrap 在 meteor 文本区域上工作

Javascript:未捕获的类型错误未定义不是对象方法的函数

javascript - 为什么在重新分配时该对象复制不为空?

javascript - 使用 Object.create 的优势

javascript - 数组 > 对象 : how to index an array of objects with reduce, 省略结果中嵌套元素的索引(es2017)?

javascript - 具有恒定纵横比的 JQuery 对话框

javascript - 如何使用javascript在包含json对象的变量上实现map方法

javascript - AsyncStorage React Native 保存数组

javascript - 从 URLSearchParams 转换字符串数组值