代码实现: var getKeys = function(list){ var keys = []; if(!list || !Array.isArray(list)){ return keys; }
for(var i= 0,len=list.length;i<len;i++){ var item = list[i]; var key = [];
if('object'==typeof item){ //解析一项 for(var ok in item){ var obj = item[ok];
for(var tmp in obj){ if('function'!=typeof obj[tmp]){ key.push(tmp); } }
break; } }
keys.push(key); }
return keys; }
var merge = function(event){ var data = event.data; //{target:{},source:[]}; var result = [];
var target = data.target || {};//目标 var source = data.source || [];//数组 var keys = getKeys(source) || [];
if(0==keys.length){ return target; }
for(var key in target){ var item = target[key];
for(var i= 0,len=source.length;i<len;i++){ var copy = source[i][key]; if('undefined'==copy || null==copy){ continue; }
var keyitem = keys[i]; if(0==keyitem){ continue; }
for(var x=0;x<keyitem.length;x++){ item[keyitem[x]] = copy[keyitem[x]]; }
result.push(item); } }
postMessage(result); }
onmessage = merge;
调用示例:
var result = [],source = [];
source.push(re1[0]);
source.push(re2[0]);
var data = {target:re[0],keys:['ADCD','STCD'],source:source};
var st_ = smerge(data);
感谢支持技术分享,请扫码点赞支持: