使用dynamic名称和dynamic嵌套级别访问对象属性

我从string中读取要访问的对象的属性:level1.level2.property或level1.property OR …名称和嵌套可能会有所不同。 我将这些对象存储在一个单独的模块(workerFunctions)中。

我知道我可以用[]符号dynamic地访问对象,例如:

var level1="level1"; var property="property"; console.log(workerFunctions[level1][property]) 

但是,我不知道如何从不同的inputstringdynamic地构造这个“workerFunctions [level1] [property]”,所以产生例如:

 console.log(workerFunctions[level1][level2][property]) 

由于string:level1.level2.property。

先谢谢你。

您可以拆分path,并使用这些部分作为给定对象的属性。

 function getValue(o, path) { return path.split('.').reduce(function (o, k) { return (o || {})[k]; }, o); } var o = { A : { B: { C: { value: 'Brenda' } } } }; console.log(getValue(o, 'ABC').value); // Brenda console.log(getValue(o, 'ZYX')); // undefined 

这应该做到这一点:

 const str = 'level1.level2.property'; let value = { //workerFunctions; level1: { level2: { property: 'this is the value' } } }; str.split(/\./).forEach((prop) => { value = value[prop]; }); console.log(value);