首页 > 解决方案 > 基于另一个数组按值过滤数组

问题描述

我有一堆卡片。我需要根据另一个数组按值字过滤它。只有那些对象应该保留在与数组困难词中的名称相对应的卡片中

const cards = [ 
  {
      word: 'cry',
    },
    {
      word: 'fishing',
    },
    {
      word: 'fly',
    },
    {
      word: 'hug',
    },
  ],
  [
    {
      word: 'open',
    },
    {
      word: 'play',
    },
    {
      word: 'run',
    },
    {
      word: 'sing',
    },
  ],
.....
let difficultWords = ["cry", "run", "sing"];

这是我的代码:(但 id 不起作用)

 let wrongCard = cards.forEach(card => {
    card.filter(el => difficultWords.forEach(i => el.word === i));
 }

输出应该是

let wrongCard = [ 
  [
    {
      word: 'cry',
    },
  ],
  [
    {
      word: 'run',
    },
    {
      word: 'sing',
    },
]
    

标签: javascriptarraysfilter

解决方案


const cards = [
  [
    {
      word: 'cry'
    },
    {
      word: 'fishing'
    },
    {
      word: 'fly'
    },
    {
      word: 'hug'
    }
  ],
  [
    {
      word: 'open'
    },
    {
      word: 'play'
    },
    {
      word: 'run'
    },
    {
      word: 'sing'
    }
  ]
];
let difficultWords = ['cry', 'run', 'sing'];

const wrongCard = cards.map((card) =>
  card.filter((c) => difficultWords.includes(c.word))
);

console.log(wrongCard);


推荐阅读