javascript - 通过字符串选择全局变量,包括子属性

标签 javascript object eval

在 javascript 中,我想通过名称来选择某个属性,该属性存储在字符串中。我知道 window[someString] 是正确的选择。当 someString = "somevariable" 时它可以工作,但不幸的是,我的程序也会有诸如 someobject.someproperty 之类的字符串。这不起作用。

所以问题是,给定代码

someString = "one.two.three";
one = {
  two: {
    three: "This is the value that I want to get"
  }
};
// window[someString] does not work.

,如何使用 someString 的值获取 one.two.third 的值,不使用 eval

最佳答案

使用 split 并进行递归方法

var someString = "one.two.three";
var keys = someString.split('.');

one = {
  two: {
    three: "This is the value that I want to get"
  }
};

function getinnerProperty(object, keys) {
  var key = keys.shift();

  if (keys.length) {
    var nestedObject = object[key];
    return getinnerProperty(nestedObject, keys);
  } else {
    return object[key];
  }
}

console.log(getinnerProperty(window, keys));

关于javascript - 通过字符串选择全局变量,包括子属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32726311/

相关文章:

javascript - 通过 JavaScript 使用变量更改边距

javascript - 使用 imgNotes 在特定位置显示文本

javascript - 对象和属性的随机数组

C++/过剩 : Generating multiple asteroids/bullets

string - 将字符串评估为 J 中的动词

linux - Makefile:108: *** 配方在第一个目标之前开始

javascript - 将函数传递给nighmarejs的evaluate()

javascript - 未捕获的类型错误 : fs. createWriteStream 不是函数

JAVA:对象数组仅打印最后一个元素

python - 如何评估包含等号的字符串?