根据数组A是否包含数组b中的任何或部分元素对数组A进行过滤



我有两个数组,数组A有一个元素列表,其中可能包含数组b中的元素,也可能不包含数组b中的元素。我想对数组A进行筛选,使其只包含至少包含数组b中的一个元素的元素。

const a = [
'cqAWS1x2', 
'cqAM1c',
'cqA10a + cqA10b',
'cqA10axZAF + cqA10bxZAF']
const b = [
'cqAWS1x2',
'cqA10a',
'cqA10axZAF']

我想过滤a,所以它是

['cqAWS1x2',
'cqA10a + cqA10b',
'cqA10axZAF + cqA10bxZAF']

'cqAWS1x2'因为数组b包含该元素,'cqA10a + cqA10b'因为b包含'cqA10a',它是'cqA10a + cqA10b'的一部分。'cqA10axZAF + cqA10bxZAF'也一样,因为b包含'cqA10axZAF'。

这是我目前为止写的:

a.filter(avc => b.some(bvc => bvc.includes(avc)))

在结果中,我只得到['cqAWS1x2'],但没有'cqA10a + cqA10b''cqA10axZAF + cqA10bxZAF'

谢谢你的帮助!

您只需要在includes()调用中切换avcbvc(avc是较长的字符串,检查它是否包括较短的bvc)。

const a = ['cqAWS1x2', 'cqAM1c', 'cqA10a + cqA10b', 'cqA10axZAF + cqA10bxZAF'];
const b = ['cqAWS1x2', 'cqA10a', 'cqA10axZAF'];
console.log(a.filter((avc) => b.some((bvc) => avc.includes(bvc))));