描述:一个总的数组和包含的一个分的数组,现在数组内需要定义一个唯一的值id,而分数组内的id也要同步。例如:一个大数组内有10条数据,而包含的小数组只有两条数据(为大数组内的任意两条),在小数组根据id找到大数组对应的id。
目的:关联两个数组,实现定位
实现:
// 总数据,根据name查找,不存在相同name假设
var all = [{
"name": "q",
"age": 18,
"email": "33@qq.com",
"sex": "男"
}, {
"name": "w",
"age": 19,
"email": "34@qq.com",
"sex": "男"
}, {
"name": "e",
"age": 18,
"email": "33@qq.com",
"sex": "女"
}, {
"name": "r",
"age": 18,
"email": "33@qq.com",
"sex": "男"
}, {
"name": "t",
"age": 18,
"email": "33@qq.com",
"sex": "男"
}, {
"name": "y",
"age": 18,
"email": "33@qq.com",
"sex": "男"
}, {
"name": "u",
"age": 18,
"email": "33@qq.com",
"sex": "男"
}, {
"name": "i",
"age": 18,
"email": "33@qq.com",
"sex": "男"
}, {
"name": "o",
"age": 18,
"email": "33@qq.com",
"sex": "男"
}, {
"name": "a",
"age": 18,
"email": "33@qq.com",
"sex": "男"
}, {
"name": "s",
"age": 18,
"email": "33@qq.com",
"sex": "男"
}];
// 局部数组,包含在全部内
var select = [{
"name": "e",
"age": 18,
"email": "33@qq.com",
"sex": "女"
}, {
"name": "s",
"age": 18,
"email": "33@qq.com",
"sex": "男"
}];
方法一:双层for循环赋值,为总数组给予id属性,根据name找到对应的在赋予子数组
for(var j = 0; j < select.length; j++) {
for(var i = 0; i < all.length; i++) {
all[i].id = i + 1;
if(select[j].name==all[i].name){
select[j].id=all[i].id;
}
}
}
方法二:使用下滑线Js实现,首先为总数组添加id,循环子数组,根据其name在子数组添加id值
for(var i=0;i<all.length;i++){
all[i].id=i+1;
}
_.each(select,function(data){
data.id=_.where(all,{name:data.name})[0].id;
})
实现结果: