js把两个对象合并成一个对象的方法:
base = {
"id": 0,
"sex": 1,
"name": "empty",
"favorites": {
"color": "",
"fruit": "",
}
}
src = {
"id": 1,
"sex": "man",
"favorites": {
"color": "blue",
"fruit": "pitaya",
"drink": "cola"
}
}
要求:
将src合并到base对象里面,如果src里面有base对象不存在的值则忽略。
如果src里面的值与base的值类型不同,也忽略。
忽略合并的值均以base的值为准。
所以合并后的对象应该为
result = {
"id": 1,
"sex": 1, //由于类型不一致不会合并
"name": "empty", // 由于src中没有此字段所以与base中保持一致
"favorites": {
"color": "blue",
"fruit": "pitaya"
}
}
总结得到如下方法:
function merge(base, src) {
for (var bk in base) {
if(bk in src){
if(typeof base[bk] == typeof src[bk]){
if(typeof base[bk] == 'object'){
merge(base[bk],src[bk])
}else{
base[bk] = src[bk]
}
}
}
}
return base
}