如何通过字符串作为括号表示法获取 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。太邪恶了!
我想要 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。太邪恶了!