多个数组对象操作
multiple arrays object manipulation
array1 = [{"name":"John"},{"name":"James"}];
array2 = [{"gred_id":1,"name":"John","gred":"A"},{"gred_id":2,"name":"James","gred":"B"}];
我有 2 个像上面一样的数组。通过比较候选人的名字,我想把gred_id放到 array1 中。我卡在这里
$.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
}
});
});
这就是我最终想要的:
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;
}
});
});
输出
array1 = [{"name":"John","gred_id":1},{"name":"James","gred_id":2}];
您可以将 object1 迭代存储为子对象,因为当存在不同的范围时,它会被修改。 itm1=this
,因此 array1 对象将存储在作用域 array1 迭代和 array2 迭代中的每个迭代中
var array1 = [{"name":"John"},{"name":"James"}];
var array2 = [{"gred_id":1,"name":"John","gred":"A"},{"gred_id":2,"name":"James","gred":"B"}];
var itm1;
$.each(array1,function(){
itm1= this;
$.each(array2, function(){
if(itm1.name == this.name){
itm1.grey_id = this.gred_id; // here this refers to array2 iteration
}
});
});
console.log(array1);
尝试使用$.map()
var array1 = [{
"name": "John"
}, {
"name": "James"
}];
var array2 = [{
"gred_id": 1,
"name": "John",
"gred": "A"
}, {
"gred_id": 2,
"name": "James",
"gred": "B"
}];
array1 = $.map(array1, function(val, key) {
return val.name === array2[key].name
? $.extend({}, val, {"gred_id": array2[key].gred_id})
: val
});
$("pre").text(JSON.stringify(array1, null, 2));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<pre></pre>
使用,$.grep
with $.each
,
$.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
});
相关文章:
- javascript对象操作:根据指定条件选择属性
- 将数组对象传递到struts2中的操作类
- 无法在mvc视图中使用ajax调用获取操作返回的模型对象列表
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 响应应包含一个对象,但得到的却是GET操作的数组
- 如何将原型用于自定义方法和对象操作
- 以非ajax方式将js对象传递给mvc操作
- 排序和操作json对象,javascript
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- 在angularjs/javascript中操作对象
- 操作对象以创建不同的格式
- 为什么您可以在不引用“this”的情况下操作对象属性
- 操作对象的属性:将方法分配给属性
- Javascript/jQuery 范围和上下文问题,当试图操作对象的“引用”时
- Javascript D3.js操作对象数组
- 如何操作对象's结构转换成'点符号'-样式数组
- 用JS操作对象
- 在对象内循环数组,并根据数组值操作对象数据
- Javascript操作对象:map
- 使用鼠标在浏览器中使用three.js操作对象