本文介绍了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属性?
发布评论