JavaScript如何从一个包含第二个数组的数组中删除元素

时间:2018-09-06 21:30:09

标签: javascript arrays

我误解了如何删除具有与另一个数组匹配的元素的数组中的元素。

示例:

const items = ['first', 'second', 'third']
const secondItems = ['first', 'second']

预期:

console.log(items) | 'third'
console.log(secondItems) | 'first', 'second

希望有一些示例可以实现这一目标。 多次尝试使用两个forEach或filter和checking语句,但是我总是得到错误的结果。

3 个答案:

答案 0 :(得分:2)

只需使用Array.prototype.filter()方法:

const items = ['first', 'second', 'third']
const secondItems = ['first', 'second']

console.log(items.filter(i => !secondItems.includes(i)))
console.log(secondItems.filter(i => items.includes(i)))

不过,我对您的这种期望并不完全理解:

console.log(secondItems) | 'first', 'second

您能在评论中详细说明吗?

答案 1 :(得分:1)

这可以通过以下方法解决:

const items = ['first', 'second', 'third'];
const secondItems = ['first', 'second'];


const filteredBySecondItems = items.filter(function(item) {

  // For item in items array, check if there is a match
  // in secondItems. If there is no match, allow it
  // to be included in the returned list
  return secondItems.indexOf(item) === -1 

})

console.log(filteredBySecondItems) // [ 'third' ]

答案 2 :(得分:1)

items.filter(x => !secondItems.includes(x))

只需在浏览器控制台中尝试,它就可以工作。