Javascript:如何使用字符串数组获取Object属性? [英] Javascript: How to Get Object property using Array of string?
本文介绍了Javascript:如何使用字符串数组获取Object属性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何使用字符串数组(属性名称)获取对象属性? (数组中的最后一个元素是对象的内部属性)
How do i get object property using array of string (name of properties)? (the last element in array is the inner property of object)
请参见下面的代码:
便捷方式:
let myObject = {
"property": {
"subproperty": {
"targetproperty": "Hi, We done it!"
}
}
};
let myString = "property:subproperty:targetproperty";
let parts = myString.split( ":" );
console.log( myObject[ parts[ 0 ] ][ parts[ 1 ] ][ parts[ 2 ] ] ); // Output: "Hi, We done it!"
评估方式:
let myObject = {
"property": {
"subproperty": {
"targetproperty": "Hi, We done it!"
}
}
};
let myString = "property:subproperty:targetproperty";
let parts = myString.split( ":" );
let code = "myObject";
for ( let i = 0; i < parts.length; i++ ) {
code += "['" + parts[ i ] + "']";
}
code += ";";
console.log( code );
console.log( eval( code ) ); // Output: "Hi, We done it!"
Eval是邪恶的.所以我需要一种更清洁的方法.
Eval is evil. so i need a cleaner way to do it.
在没有评估和方便的情况下该如何做?
How do i do it without eval and handy job?
推荐答案
您可以使用.reduce()
:
let myObject = {
"property": {
"subproperty": {
"targetproperty": "Hi, We done it!"
}
}
};
let myString = "property:subproperty:targetproperty";
let value = myString.split(":").reduce(function(obj, prop) {
return obj && obj[prop];
}, myObject);
console.log(value);
这篇关于Javascript:如何使用字符串数组获取Object属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文