在 Javascript 中的对象数组中映射和减少数组

用户7131971

我将不胜感激以下任何建议。我需要从下面的对象数组中的数组中提取关键字,并减少它们以显示所有关键字而不重复。

我的数据JSON 对象如下:

[
  {
    "word":"Cat",
    "answer":"A type of feline",
    "keywords": ["pet", "mouse-catcher"]
  },
  {
    "word":"Dog",
    "answer":"A type of canine",
    "keywords": ["pet", "cat-catcher"]
  },
]

我的JS代码如下:

let keywordList = data.map(entry => {

  let list = [...entry.keywords];
    return (
      list.reduce(( finalArray, current ) => finalArray.concat(current),[])
  );
});

在我的 React 组件中,我再次使用 map 遍历数组:

<p>
  keywords: {keywordList.map((word, index) => {
    return (
      <span key={word+index}>
        <a onClick={this.searchKeyword} href="#" id={word}>{word}</a>
        <span> | </span>
      </span>
    );

  })}
</p>

不幸的是,我的 reduce 函数似乎不起作用,我得到了一组数组。任何建议都会很棒。

安迪

而不是map,一个reduce带有filter

var list = data.reduce((p, c) => {
  return p.concat(c.keywords.filter(el => !p.includes(el)));
}, []);

演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章