如何使用字符串引用对象数组项?

use*_*338 1 javascript typescript

我有一个数组

fruit={sweet:'apple',dry:{f1:'raisin',f2:'almond'},sour:'strawberry'}
Run Code Online (Sandbox Code Playgroud)

它包含简单和嵌套的对象作为项目

我可以使用括号表示法引用 f1fruit[0]["dry"]["f1"] 但我有一个具有值的字符串变量var str="dry.f1"

运行时更改的值"str"可能是"sweet""dry.f1""sour"

"str" 如果 str 的值是 "sweet""sour" fruit[str]工作正常,我如何引用数组项

我们可以使用获取 f1 的值fruit[0].dry.f1,但我需要使用变量 str 访问它

Cha*_*a G 5

您可以使用splitreduce

var fruit={sweet:'apple',dry:{f1:'raisin',f2:'almond'},sour:'strawberry'};

var str1 = "dry.f1";
var str2 = "sweet";

var example1 = str1.split('.').reduce((a, b) => a[b], fruit);
var example2 = str2.split('.').reduce((a, b) => a[b], fruit);

console.log(example1);
console.log(example2);
Run Code Online (Sandbox Code Playgroud)

这会将每个点上的字符串分割成一个数组,然后通过迭代字符串中的值来减少水果数组,将它们应用于水果数组,以获得您正在寻找的值。