在没有json的两个数组中查找匹配值

时间:2019-02-24 20:32:41

标签: javascript arrays

我见过this questionthis 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应该返回:红色,蓝色

这是怎么做到的?

3 个答案:

答案 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);