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进行匹配?是的,这是正确的。