var d=[
{
'fn':'john',
'en':'doe',
'k':['0','5','44']
},
{
'en':'bark',
'k':[,'25','44']
}
];
合并(d[0],d[1]);应该返回这个:
{
'fn':'john',
'en':'bark',
'k':['0','5','25','44']
}
这是一个常见的合并,唯一的区别是如果数组不同,则将被推送(就像fn变量一样,它只是被添加,或者像en变量一样,它被替换,或者像k数组,它被推送,如果它是不同)(同时排序)
编辑 1
为我编写脚本不是我想要的,我不熟悉“is array”和“hasPropery”,因为我不熟悉,我正在寻求一个方向的帮助,并且我正在使用 nodejs,所以 jquery 是一个禁忌。
编辑 2
这是我用来解决问题的代码,以防有人好奇:
function is(obj, type) {
return Object.prototype.toString.call(obj).slice(8, -1) == type;
}
Array.prototype.unique = function() {
var a=this;
for(var i=0; i<a.length; ++i) {
for(var j=i+1; j<a.length; ++j) {
if(a[i] === a[j])
a.splice(j--, 1);
}
}
return a;
};
Object.prototype.merge = function(b) {
var a=this;
for(var prop in b){
if(is(b[prop],'Array')&&is(a[prop],'Array')){
a[prop]=a[prop].concat(b[prop]).unique().sort(function(a,b){return parseInt(a)-parseInt(b)});
}else{
a[prop]=b[prop];
}
}
return a;
}
d[0].merge(d[1]) 正是我所要求的。