我有2个数组,我想用另一个过滤一个数组。例如。如果array1包含array2中的任何值,则应返回它们。
两个数组是:
const array1 = [a, b, c, d]
另一个数组,如果'id'等于array1中的任何值,则应过滤该数组:
const array2 = [
{
id: b
title: title1
},
{
id: d
title: title2
},
{
id: f
title: title3
}
]
答案 0 :(得分:0)
最简单的方法是使用两个for循环。可能不是最快的方法。
res = [];
for (var i = 0;i<array1.length;i++) {
for (var j = 0;j<array2.length;j++) {
if (array1[i] == array2[j].id) {
res.push(array2[j]);
break;
}
}
}
答案 1 :(得分:0)
您可以使用Array.prototype.filter()和Array.prototype.indexOf():
const array1 = ['a', 'b', 'c', 'd'];
const array2 = [{
id: 'b',
title: 'title1'
}, {
id: 'd',
title: 'title2'
}, {
id: 'f',
title: 'title3'
}];
const result = array2.filter(function(x){
return array1.indexOf(x.id) !== -1;
});
答案 2 :(得分:0)
添加缺少的''
,可以使用Array的filter
和includes
方法。
const array1 = ['a', 'b', 'c', 'd'];
const array2 = [
{
id: 'b',
title: 'title1'
},
{
id: 'd',
title: 'title2'
},
{
id: 'f',
title: 'title3'
}
]
const result = array2.filter(({id}) => array1.includes(id));
console.log(result);