Javascript 如何迭代数组中的值以匹配对象中的值并返回相应的对象?

Javascript 如何迭代数组中的值以匹配对象中的值并返回相应的对象?,javascript,arrays,object,lodash,Javascript,Arrays,Object,Lodash,我尝试在包含大量对象的另一个数组中搜索从数组中获得的任何值。 我试着用lodash,但香草也可以 我的引用数组如下所示: let array1 = ["value1", "value2", "value8", "value9"] 我想在这个对象数组中找到这些值: let array2 = [{ key1: xxx key2: value1 key3: xxxx }, { key1: value2 key2: xxxx key3: xxxx }, { key1: xx

我尝试在包含大量对象的另一个数组中搜索从数组中获得的任何值。 我试着用lodash,但香草也可以

我的引用数组如下所示:

let array1 = ["value1", "value2", "value8", "value9"]
我想在这个对象数组中找到这些值:

let array2 = [{
  key1: xxx
  key2: value1
  key3: xxxx
}, {
  key1: value2
  key2: xxxx
  key3: xxxx
}, {
  key1: xxx
  key2: xxx
  key3: value3
}]

我试过了

let finalData: []

let filterData = _.filter(array2, array1);
this.finalData = filterData
我希望返回一个包含所有匹配对象的数组:

[{
  key1: xxx
  key2: value1
  key3: xxxx
}, {
  key1: xxx
  key2: value2
  key3: xxxx
}]

我总是得到一个空数组。 我是否需要为每种方法组合a来实现这一点

好处:若它可以返回一个包含未找到值的数组(值8、值9)的错误,这将是非常重要的。

让数组1=[“value1”、“value2”、“value8”、“value9”];
设array2=[
{
“键1”:“xxx”,
“键2”:“值1”,
“键3”:“xxxx”
}, {
“键1”:“xxx”,
“键2”:“值2”,
“键3”:“xxxx”
},
{
“键1”:“xxx”,
“键2”:“值3”,
“键3”:“xxxx”
}
];
//复制原始阵列1
让noMatch=[…数组1];
//迭代(并过滤)每个元素
//array2包含的
让match=array2.filter(elem=>{
//迭代元素中的每个键
用于(元素中的常量键){
//检查array1是否具有该值
const found=array1.find(e=>e==elem[key]);
如果(找到){
//从noMatch中删除匹配的值
noMatch=noMatch.filter(e=>e!==found);
//发现
返回true;
}
}
//找不到
返回false;
});
//匹配元素
console.log('match',match);
//与任何元素都不匹配的值

console.log('noMatch',noMatch)
array2.filter(it=>array1.includes(it.key2))
您试图查找的值可能并不总是在
key2
上,也就是说,我们应该查看对象的所有键,或者只查看一个特定的键?@Shidersz,很抱歉,这不精确,实际上该值可以放在任何地方。我已经更新了我的示例。这项工作非常好,谢谢!!你知道我怎样才能得到一个没有找到的值数组[“value8”,“value9”]?我试图添加一个else if,但我不知道在这种情况下如何获取array1值…@nuonoolerobot检查编辑。这非常完美,有注释和所有内容!非常感谢你的时间,这是拯救生命!