我见过this question和this one,但似乎没有一个答案对我有用。
这个想法是弄清楚colors1和colors2内部是什么,并将匹配的颜色仅保留到另一个数组中:colorsPicked。
const colors1 = ["red", "blue"];
const colors2 = ["red", "yellow"];
const elements = ["red", "blue", "green", "yellow"];
const colorsPicked = elements.filter(el => colors1.concat(colors2).includes(el));
console.log(colorsPicked);
在上面的示例中,colorsPicked包含:红色,蓝色,黄色。
因此,我需要得到的只是只有colors1和colors2之间匹配的颜色。也就是说,colorsPicked应该返回:红色
如果colors1包含红色,蓝色,黄色,而color2包含红色,蓝色,黑色,则colorsPicked应该返回:红色,蓝色
这是怎么做到的?
答案 0 :(得分:0)
只需检查其中一个的值是否也在另一个中。
const colors1 = ["red", "blue"];
const colors2 = ["red", "yellow"];
const colorsPicked = colors2.filter(el => colors1.includes(el));
console.log(colorsPicked);
答案 1 :(得分:0)
只需检查另一个数组中元素的索引
const colors1 = ["red", "blue"];
const colors2 = ["red", "yellow"];
console.log(colors1.filter((e)=>colors2.indexOf(e)>-1))
答案 2 :(得分:0)
您可以在过滤color1时使用indexOf()来查看color2中的值是否如此
const colors1 = ["red", "blue"];
const colors2 = ["red", "blue"];
const colorsPicked = colors1.filter(function(el){
if(colors2.indexOf(el)>-1){return el;}
});
console.log(colorsPicked);