首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何映射两个数组并将匹配作为按钮返回?

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

Stack Overflow用户
提问于 2017-12-28 19:25:18
回答 2查看 573关注 0票数 1

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

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

keyWords =“水槽”、“浴缸”、“刷子”

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

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

data =对象数组 keyWords =关键字数组

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

代码语言:javascript
运行
复制
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) =>函数,但我不知道如何做到这一点,并同时返回所有的按钮。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-28 19:30:07

您正在尝试将数组与字符串进行比较。使用Array#includes()查看字符串是否在数组中

代码语言:javascript
运行
复制
const renderKeyButtons = this.props.data.filter(obj => {
   return this.state.keyWords.includes(obj.title);
     }).map((obj, idx) => {
         return (
            <button key={idx}>{obj.title}</button>
         );
 });
票数 1
EN

Stack Overflow用户

发布于 2017-12-28 19:30:16

使用Array.prototype.includes()方法来实现它,而不需要像这样的迭代

代码语言:javascript
运行
复制
const renderKeyButtons = this.props.data.filter(obj => {
   return this.state.keyWords.includes(obj.title);
     }).map((obj, idx) => {
         return (
            <button key={idx}>{obj.title}</button>
         );
 });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48013203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档