Javascript 如何比较相同值的两个数组,并使用真或假标志将它们保存到第三个数组

Javascript 如何比较相同值的两个数组,并使用真或假标志将它们保存到第三个数组,javascript,node.js,arrays,multidimensional-array,Javascript,Node.js,Arrays,Multidimensional Array,我有两个阵列: var arr1 = [{name:"Option1"},{"name":"Option2"},{"name":"Option3"},{"name":"Option4"},{"name":"Option5"},{"name":"Option6"},{"n

我有两个阵列:

var arr1 = [{name:"Option1"},{"name":"Option2"},{"name":"Option3"},{"name":"Option4"},{"name":"Option5"},{"name":"Option6"},{"name":"Option7"},{"name":"Option8"},{"name":"Option9"},{"name":"Option10"}]

var arr2 = [{"name": "Option 2"},{"name": "Option 4"},{"name": "Option 6"},{"name": "Option 8"},{"name": "Option 10"}]
我希望实现的是,第三个数组包含来自arr1的所有值,如果在arr2 ELSE“marked”:false中找到该值,则附加标志为“marked”:true

我尝试了多种arry方法的组合,如map()、filter()、forEach(),但不知何故,我无法找出如何在不重复值或创建重复项的情况下正确返回

**我看到的是,我的内循环和外循环这两个语句都被执行了,我不知何故错过了返回真/假逻辑,结果重复了我的循环,重复的时间等于arr2的长度**

功能测试(){
变量arr1=[{
名称:“选项1”
},
{
“名称”:“选项2”
},
{
“名称”:“选项3”
},
{
“名称”:“选项4”
},
{
“名称”:“选项5”
},
{
“名称”:“选项6”
},
{
“名称”:“选项7”
},
{
“名称”:“选项8”
},
{
“名称”:“选项9”
},
{
“名称”:“选项10”
}
]
var arr2=[{
“名称”:“选项2”
},
{
“名称”:“选项4”
},
{
“名称”:“选项6”
},
{
“名称”:“选项8”
},
{
“名称”:“选项10”
}
]
arr1.forEach((el)=>{
arr2.forEach((el2)=>{
if(el.name.toString()==el2.name.toString()){
return console.log(“从if循环内部打印”,el)
}
log(“从if循环外部打印”,el)
})
})
}

test()
首先将arr2中的所有比较值(名称)映射到

然后映射
arr1
以创建新数组并查找arr2集中的每个名称

const arr2Names=新集合(arr2.map(e=>e.name));
const res=arr1.map(e=>({…e,标记为:arr2Names.has(e.name)}));
console.log(res)

var arr1=[{name:“Option1”}、{name:“Option2”}、{name:“Option3”}、{name:“Option4”}、{name:“Option5”}、{name:“Option6”}、{name:“Option7”}、{name:“Option8”}、{name:“Option9”}、{name:“Option10”},
arr2=[{name:“Option2”},{name:“Option4”},{name:“Option6”},{name:“Option8”},{name:“Option10”}];

这很有魅力。只需使用5k+记录的实际数据进行测试,并将其排序,就像
set.has()
返回布尔值一样(请参见链接中的文档)。新对象是通过对原始对象进行一些“解构”并向其添加标记为的新属性来完成的
map()
在迭代另一个数组的基础上创建一个新数组它的故障效率很高,因为每个数组只迭代一次,设置查找的复杂性为O(1)是的,感谢指向的ref链接非常有用,我在atcual代码中注意到的一点是,结果是一个充满承诺的数组。关于为什么我知道它与问题无关,但在答案快照{'$\':InternalCache{strictMode:true,….},isNew:false,errors:undefined,'$locals':{},$op':null,\u doc:{..},$init:true,matched:true}取决于您用来获取数据的api/sdk。如果有问题,请开始一个新问题。此问题不是为此而设置的