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

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

本文关键字:javascript 获取 对象 嵌套 表示 字符串 何通过      更新时间:2023-09-26

我想要一个javascript中的方法,它可以获取一个字符串作为参数,并从嵌套对象返回一个值,如:

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, '.$1').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。它是邪恶的!