0
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]) は、まさに私が求めていたものを提供してくれます。

4

2 に答える 2