我有一个关键字数组和一个对象数组。关键字数组与来自对象数据数组的对象内部的标题匹配。我想要映射到我所有的对象,寻找一个关键字匹配,并返回对象标题。我想对我的关键字数组中的每个关键字执行此操作。
现在,我只能让它工作在关键字数组中的一个关键字上。基本上如果我有..。
keyWords =“水槽”、“浴缸”、“刷子”
我的对象数组包含一个等于这些关键字的obj.title,它将只匹配其中的一个,并返回一个名为“接收器”的按钮。
我似乎不能遍历我所有的关键字数组,但是我正在遍历我的对象数组。
data =对象数组 keyWords =关键字数组
目标是映射数据,在关键字中查找匹配项,如果我找到匹配项,我想返回一个带有匹配对象标题的按钮。这方面的问题是它不迭代keyWords数组。如果我添加类似keyWords的内容,我可以查看匹配的特定项,但是我想遍历所有的关键字并找到所有匹配项。
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) =>函数,但我不知道如何做到这一点,并同时返回所有的按钮。
发布于 2017-12-28 19:30:07
您正在尝试将数组与字符串进行比较。使用Array#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>
);
});发布于 2017-12-28 19:30:16
使用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>
);
});https://stackoverflow.com/questions/48013203
复制相似问题