如何通过字符串作为括号表示法获取 javascript 中的嵌套对象?

How to get nested objects in javascript by an string as a bracket notation?

我想要 javascript 中的一个方法,它获取一个字符串作为其参数,并 return 一个来自嵌套对象的值,例如:

var obj = {
  place: {
    cuntry: 'Iran',
    city: 'Tehran',
    block: 68,
    info: {
     name :'Saeid',
      age: 22
    }
  }
};

function getValue(st) {
  // st: 'place[info][name]'
  return obj['place']['info']['name'] // or obj.place.info.name
}

您的用例的一种可能解决方案:

function getValue(st, obj) {
    return st.replace(/\[([^\]]+)]/g, '.').split('.').reduce(function(o, p) { 
        return o[p];
    }, obj);
}

console.log( getValue('place[info][name]', obj) );  // "Saeid"
console.log( getValue('place.info.age', obj) );     // 22

你能以“['a']['b']['c']”的形式得到你的输入吗?

function getValue(st) {
  // st: "['place']['info']['name']"
  return eval("obj"+st);
}

您可以对任何字符串应用转换并获得结果。

编辑:

请勿在您的代码库中直接使用 Eval。太邪恶了!