簡體   English   中英

如何通過字符串作為括號表示法來獲取javascript中的嵌套對象?

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

我想要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。 它的邪惡!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM