javascript - js 数组匹配对象并赋值

查看:575
本文介绍了javascript - js 数组匹配对象并赋值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

如何找到俩个数组中的匹配项并且赋值。如:
var arr1=[{"id":1},{"id":2}{"id":3}....];
var arr2=[{"id":1,"value":"a"},{"id"2,"value":"b"}...];

目前想到的方法就是循环里套循环来匹配:

for(i=0;i<arr1.length;i++){
    var temID=arr1[i].id;
    for(var j=0;j<arr2.length;j++){
        if(temID==arr2[j].id){
            arr1[i]["newValue"]=arr2[j]["value"];
            break;
        }
    }
}

有没有什么更加简便高效的方法?

解决方案

WeiJietao的答案是不是默认了两个数组长度一致,且顺序一致?这个题目没有这么说明吧, 贴下自己写的如下。优化了下语义,代码量。要扩展的话加几个参数就ok。

var arr1=[{"id" : 33}, {"id" : 42}, {"id" : 21}, {"id" : 2}, {"id" : 777}];
var arr2=[{"id" : 3, "value" : "a"}, {"id" : 2, "value" : "b"}, {"id" : 42, "value" : "c"}];

function replace(arr1, arr2) {
    var temp;

    arr1.map(function(v1) {
        (temp = arr2.find(function(v2) {
             return v1.id == v2.id;
        })) && (v1.newValue = temp.value)

        return v1;
    })

    return arr1;
}

console.log(replace(arr1, arr2));
// or replace(arr1, arr2) console.log(arr1);

另外你说的10万条问题,个人感觉没有必要,因为前提不成立,没有场景会让前端一次取这么多数据,你应该考虑优化数据库。

这篇关于javascript - js 数组匹配对象并赋值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆