javascript - 如何映射两个数组并将匹配项作为按钮返回?

标签 javascript arrays reactjs components

我有一组关键字和一组对象。关键字数组与对象数据数组中对象内的标题相匹配。我想映射我所有的对象以寻找关键字匹配并返回该对象的标题。我想对我的关键字数组中的每个关键字执行此操作。

现在,我只能让它对关键字数组中的一个关键字起作用。基本上如果我有...

keyWords = [ "sink", "tub", "brush" ]

我的对象数组包含一个 obj.title 等于这些关键字,它将只匹配其中一个并返回一个名为“sink”的按钮。

我似乎无法遍历我所有的关键字数组,但我正在遍历我的对象数组。

data = array of objects

keyWords = array of key words

目标是映射数据以在我的关键词中寻找匹配项,如果找到匹配项,我想返回一个带有匹配对象标题的按钮。问题在于它不会遍历 keyWords 数组。如果我添加类似 keyWords[0] 的内容,我可以查看该特定项目的匹配项,但我想遍历所有关键字并找到所有匹配项。

const renderKeyButtons = this.props.data.filter(obj => {
   return this.state.keyWords === obj.title;
     }).map((obj, idx) => {
         return (
            <button key={idx}>{obj.title}</button>
         );
 });

我的猜测是我需要添加一些东西来映射关键字,例如附加的 (map, idx) => 函数,但我不确定如何执行此操作并立即返回所有按钮。

最佳答案

使用Array.prototype.includes()无需像这样的任何迭代即可实现它的方法

const renderKeyButtons = this.props.data.filter(obj => {
   return this.state.keyWords.includes(obj.title);
     }).map((obj, idx) => {
         return (
            <button key={idx}>{obj.title}</button>
         );
 });

关于javascript - 如何映射两个数组并将匹配项作为按钮返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48013203/

相关文章:

Javascript 将数组插入对象内部

reactjs - 使用 firebase 进行身份验证。 AuthWithOAuthPopup 不是一个函数

reactjs - 尝试使用 Node.js Lambda 函数在 AWS REST API 配置上通过 Axios 发布数据时出现 CORS 错误

javascript - 初始化程序抛出错误 : Uncaught ReferenceError: module is not defined

javascript - Amazon S3 JS SDK putBucketLifecycleConfiguration 给出 XML 架构错误

javascript - Angular 6 : How to set response type as text while making http call

c - 在 C 中使用定界符拆分字符串 - 段错误

java - 一次查找数组 12 个元素的最大值

javascript - TypeError : this. state.posts.map 在将状态设置为数组时不是函数

javascript - 如何检测我的计算机规范并在浏览器中显示?