javascript - 如何从数组中的名称调用对象

标签 javascript arrays reactjs object

我有这个数组categories = [Sports, Kids]

哪里SportsKids不是字符串,它们是 export const Sports = {...} 之后导入的对象从另一个文件导出。

我也有categoriesLoop = ['Sports', 'Kids']循环 <select> 中的类别为此:categoriesLoop.map(category => <option>{category}</option> react 中。

现在的问题是如何访问SportsKids 对象来自其数组中的字符串名称 - categories - ?

就像,当我在选择 onChange 中执行此操作时:

const category = e.currentTarget.value;
console.log(categories[category]);

我得到未定义,因为 categories 中不存在字符串“Sports”它有一个对象而不是字符串

如何获得 Sports categories 中的对象当我有字符串 'Sports' 时?

我错过了什么吗?

最佳答案

使用对象而不是数组,然后只使用括号表示法:

const categories = { Sports, Kids };
// ...
const category = e.currentTarget.value;
console.log(categories[category]);

大小写很重要 - 在这里,您必须准确输入 SportsKids。由于这听起来像是来自用户输入,因此您可以考虑使用小写键,然后 trim 输入值并将其小写:

const categories = { sports: Sports, kids: Kids };
// ...
const category = e.currentTarget.value.trim().toLowerCase();
console.log(categories[category]);

关于javascript - 如何从数组中的名称调用对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56815696/

相关文章:

javascript - 按特定顺序对对象数组进行排序

javascript - 选择性页面无限滚动

javascript - javascript函数中的所有语句都没有被执行

javascript - 将键和值映射到 Javascript 中的新键

javascript - 如何在重定向到另一个页面后显示 react 通知?

javascript - react-select 中的 valueComponent 和 valueRenderer 有什么区别?

javascript - 如何添加跨域资源共享请求头?

javascript - 动画向下运行良好,向上运行则不起作用

javascript - while 循环不执行或不循环?

用户定义类型的 Java 数组