Javascript 多数组对象操作

Javascript 多数组对象操作,javascript,jquery,json,Javascript,Jquery,Json,我有两个类似上面的数组。通过比较应聘者的姓名,我想把gred_id放入数组1。我被困在这里 array1 = [{"name":"John"},{"name":"James"}]; array2 = [{"gred_id":1,"name":"John","gred":"A"},{"gred_id":2,"name":"James","gred":"B"}]; 这就是我最终想要的: $.each(array1,function(){ var name= this["name"];

我有两个类似上面的数组。通过比较应聘者的姓名,我想把gred_id放入数组1。我被困在这里

array1 = [{"name":"John"},{"name":"James"}];
array2 = [{"gred_id":1,"name":"John","gred":"A"},{"gred_id":2,"name":"James","gred":"B"}];
这就是我最终想要的:

$.each(array1,function(){
    var name= this["name"];

    $.each(array2, function(){
        if(name == this.name){
            this["grey_id"] = {"grey_id":this.id}; // not sure this is correct or wrong
        }
    });
});

您可以将object1迭代存储为子对象,因为当存在不同的作用域时,会对其进行修改
itm1=此
因此array1对象将存储在范围array1迭代和array2迭代中的每个迭代中

array1 = [{"name":"John","gred_id":1},{"name":"James","gred_id":2}];

您可以将object1迭代存储为子对象,因为当存在不同的作用域时,会对其进行修改
itm1=此
因此array1对象将存储在范围array1迭代和array2迭代中的每个迭代中

array1 = [{"name":"John","gred_id":1},{"name":"James","gred_id":2}];

根据jQuery的
.each()
,您不需要将该项存储在变量中。您可以使用
.each()
函数参数。第一个参数返回索引,第二个参数返回项

因此,您可以像这样优化代码

输出

var array1 = [{"name":"John"},{"name":"James"}];
var array2 = [{"gred_id":1,"name":"John","gred":"A"},{"gred_id":2,"name":"James","gred":"B"}];

$.each(array1, function (i, item) {
    $.each(array2, function (j, val) {
        if (item.name === val.name) {
            item.grey_id = val.gred_id;     
        }
    });
});

根据jQuery的
.each()
,您不需要将该项存储在变量中。您可以使用
.each()
函数参数。第一个参数返回索引,第二个参数返回项

因此,您可以像这样优化代码

输出

var array1 = [{"name":"John"},{"name":"James"}];
var array2 = [{"gred_id":1,"name":"John","gred":"A"},{"gred_id":2,"name":"James","gred":"B"}];

$.each(array1, function (i, item) {
    $.each(array2, function (j, val) {
        if (item.name === val.name) {
            item.grey_id = val.gred_id;     
        }
    });
});
尝试利用
$.map()

var数组1=[{
“姓名”:“约翰”
}, {
“姓名”:“詹姆斯”
}];
变量array2=[{
“gred_id”:1,
“姓名”:“约翰”,
“gred”:“A”
}, {
“gred_id”:2,
“姓名”:“詹姆斯”,
“gred”:“B”
}];
array1=$.map(array1,函数(val,键){
return val.name==array2[key].name
?$.extend({},val,{“gred_id”:array2[key].gred_id})
:val
});
$(“pre”).text(JSON.stringify(array1,null,2))

尝试利用
$.map()

var数组1=[{
“姓名”:“约翰”
}, {
“姓名”:“詹姆斯”
}];
变量array2=[{
“gred_id”:1,
“姓名”:“约翰”,
“gred”:“A”
}, {
“gred_id”:2,
“姓名”:“詹姆斯”,
“gred”:“B”
}];
array1=$.map(array1,函数(val,键){
return val.name==array2[key].name
?$.extend({},val,{“gred_id”:array2[key].gred_id})
:val
});
$(“pre”).text(JSON.stringify(array1,null,2))

使用,
$.grep
$。每个

$.each(array1, function(key, val){
    match = $.grep(array2, function(obj){   // search for match
        return obj.name == val.name;
    });
    array1[key].gred_id = match[0].gred_id; // assign the match
});

将,
$.grep
$一起使用。每个

$.each(array1, function(key, val){
    match = $.grep(array2, function(obj){   // search for match
        return obj.name == val.name;
    });
    array1[key].gred_id = match[0].gred_id; // assign the match
});