Javascript 如何比较两个数组来更新一个数组中的键值对?

Javascript 如何比较两个数组来更新一个数组中的键值对?,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我有一个主要的标签数组 var tagsArray = [ { name: "1", selected: undefined }, { name: "2", selected: undefined }, { name: "3", selected: undefined } ] 然后选择一组选定的标记进行比较: var selectedTags = [

我有一个主要的标签数组

var tagsArray = [
    {
        name: "1",
        selected: undefined
    },
    {
        name: "2",
        selected: undefined
    },
    {
        name: "3",
        selected: undefined
    }
]
然后选择一组选定的标记进行比较:

var selectedTags = [
    {
        name: "1",
        selected: true
    }
]
如何运行某种比较(for循环)来检查
selectedTags
中的哪些对象具有
selected:true


然后在
tagsArray
中将同一对象的
选定值设置为
true

创建一个访问映射,然后迭代并找到
true
值,并在另一个数组中设置值

var map = {};

tagsArray.forEach(function(obj, index) {
    map[obj.name] = index;
});

selectedTags.forEach(function(obj) {
    if ( obj.selected ) {
        tagsArray[map[obj.name]].selected = true;
    }
});

您仍然可以使用2来表示循环,而且在代码或清晰度方面也不会太差。但平均而言,它的运行速度比使用map慢O(n^2)

var i,j;

for(i = 0; i < tagsArray.length; i++){
    for(j = 0; j < selectedTags.length; j++){
        if(tagsArray[i].name === selectedTags[j].name){
            tagsArray[i].selected = true;
            break;
        }
    }
}
vari,j;
对于(i=0;i

谢谢!忘记了
map
,这太干净了,我试图用几个for-loop来实现它。谢谢你的提示!我猜
映射
的工作方式与
开关盒
语句的工作方式相同,因为它可以更快地找到需要查找的内容?不客气!地图是为快速查找数据而设计的。因此,例如,它使用一种不同的方法,而不是执行整个内部循环来匹配从tagsArray到selectedTags数组的名称,它使用更少的时间来找到相同的匹配。