Javascript 将内容从一个数组匹配到另一个数组并返回筛选后的数组

Javascript 将内容从一个数组匹配到另一个数组并返回筛选后的数组,javascript,arrays,Javascript,Arrays,我试图将一个数组中的值与另一个数组中的值进行比较,并返回一个只包含匹配项的过滤数组 例如,我可以做一个布尔检查,看看是否有匹配项: let targetArray = [{"_id" : "111", city: "Los Angeles"}, {"_id" : "222", city: "New York", }, {"_id" : "333", city: "Seattle"}] let filterValues = ["111", "333"]; let matchCheck = fi

我试图将一个数组中的值与另一个数组中的值进行比较,并返回一个只包含匹配项的过滤数组

例如,我可以做一个布尔检查,看看是否有匹配项:

let targetArray = [{"_id" : "111", city: "Los Angeles"}, {"_id" : "222", city: "New York", }, {"_id" : "333", city: "Seattle"}]

let filterValues = ["111", "333"];

let matchCheck = filterValues.every(el => targetArray.some(({_id}) => el == _id))
console.log(matchCheck) // returns true in this case
这将返回
true
,因为存在匹配项

但是我如何从原始的targetArray返回两个行进中的物体的数组呢?换句话说,一个如下所示的数组:

[{"_id" : "111", city: "Los Angeles"}, {"_id" : "333", city: "Seattle"}]
但是我如何从原始的targetArray返回两个行进中的物体的数组呢

通过使用
.filter
+
。一些

targetArray.filter(({_id}) => filterValues.some(el => el === _id));
let filterValues = new Set(["111", "333"]);
targetArray.filter(({_id}) => filterValues.has(_id));
您还可以使用
集合
而不是数组来避免
。有些

targetArray.filter(({_id}) => filterValues.some(el => el === _id));
let filterValues = new Set(["111", "333"]);
targetArray.filter(({_id}) => filterValues.has(_id));
但是我如何从原始的targetArray返回两个行进中的物体的数组呢

通过使用
.filter
+
。一些

targetArray.filter(({_id}) => filterValues.some(el => el === _id));
let filterValues = new Set(["111", "333"]);
targetArray.filter(({_id}) => filterValues.has(_id));
您还可以使用
集合
而不是数组来避免
。有些

targetArray.filter(({_id}) => filterValues.some(el => el === _id));
let filterValues = new Set(["111", "333"]);
targetArray.filter(({_id}) => filterValues.has(_id));

试试这个。

let targetaray=[{u id:“111”,城市:“洛杉矶”},{u id:“222”,城市:“纽约”},{u id:“333”,城市:“西雅图”}]
让filterValues=[“111”,“333”];
设op=targetArray.filter(e=>{
返回过滤器值。包括(e._id)
})

console.log(op)
试试这个。

let targetaray=[{u id:“111”,城市:“洛杉矶”},{u id:“222”,城市:“纽约”},{u id:“333”,城市:“西雅图”}]
让filterValues=[“111”,“333”];
设op=targetArray.filter(e=>{
返回过滤器值。包括(e._id)
})

console.log(op)
使用
设置为
过滤器()的此
参数

let targetaray=[{u id:“111”,城市:“洛杉矶”},{u id:“222”,城市:“纽约”},{u id:“333”,城市:“西雅图”}]
让filterValues=[“111”,“333”];
让filtered=targetArray.filter(函数({u id}){返回this.has({u id}),新集合(filterValues))

console.log(已过滤)
使用
设置为
过滤器()的此
参数

let targetaray=[{u id:“111”,城市:“洛杉矶”},{u id:“222”,城市:“纽约”},{u id:“333”,城市:“西雅图”}]
让filterValues=[“111”,“333”];
让filtered=targetArray.filter(函数({u id}){返回this.has({u id}),新集合(filterValues))

console.log(过滤)
为了最大限度地使用
集合
,您可以在集合上使用闭包并获取obejct,将用于检查的值与集合分开,然后返回结果

让targetaray=[{u id:“111”,城市:“洛杉矶”},{u id:“222”,城市:“纽约”},{u id:“333”,城市:“西雅图”},
FilterValue=[“111”,“333”],
过滤=targetArray.filter(
(s=>o=>s.has(o.\u id))
(新设置(过滤值))
);

console.log(过滤)
为了最大限度地使用
集合
,您可以在集合上使用闭包并获取obejct,将用于检查的值与集合分开,然后返回结果

让targetaray=[{u id:“111”,城市:“洛杉矶”},{u id:“222”,城市:“纽约”},{u id:“333”,城市:“西雅图”},
FilterValue=[“111”,“333”],
过滤=targetArray.filter(
(s=>o=>s.has(o.\u id))
(新设置(过滤值))
);

console.log(过滤)是否要基于id进行匹配?是的,这是正确的。是否要基于id进行匹配?是的,这是正确的。