我有两个数组,数组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()
调用中切换avc
和bvc
(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))));