2016-07-29 9 views
0

私は2つのJSONオブジェクトを持っているので、アンダースコアjsを使ってそれらの違いを見つけようとしています。しかし何らかの理由で、その違いを返すのではなく、オブジェクト全体を返しています。ここでの目標は、パターンを唯一のものとして戻すことです。underscore.jsを使用してオブジェクトの相違を見つける

var a = { 
     "name":"donor", 
     "label":"Donor Data File (donor)", 
     "pattern":"^donor(\\.[a-zA-Z0-9]+)?\\.txt(?:\\.gz|\\.bz2)?$" 
}; 
var b = { 
     "name":"donor", 
     "label":"Donor Data File (donor)", 
     "pattern":"^donor(\\.[a-zA-Z0-9]+)?\\.txt(?:\\.gz)?$" 
}; 

console.log(_.difference(a,b)); 

私はきちんと_.differenceのユースケースを理解していないのですか?必要に応じてJSFiddleがあります。

+1

["JSONオブジェクト"のようなものはありません](http://benalman.com/news/2010/03/theres-no-suchthing-as-a-json/) – Andreas

+0

違いはありません配列? – epascarello

+1

'_.difference'は配列用です。フル・オブ・オブジェクト・ディフィッティング・ソリューションがほしいと思うように聞こえます。たとえば、https://github.com/flitbit/diff(悪い例ですが、探しているライブラリがあります) –

答えて

0

下線は方法isMatchが、を持っていない、あなたが独自の実装を作成することができ、パラメータObjectsとして2を取るのオブジェクトの違いを返すとそのプロパティ

var stooge = {name: 'moe', age: 32}; 
_.isMatch(stooge, {age: 32}); 

と一致します方法

function getDiffProperties(object1,object2){ 
 
     var difference = []; 
 
    
 
     for(key in object1){ 
 
     if(object1[key] != object2[key]){ 
 
      difference.push(key) 
 
     } 
 
     } 
 

 
     for(key in object2){ 
 
     if(object1[key] != object2[key]){ 
 
      difference.push(key) 
 
     } 
 
     } 
 
     
 
    return difference 
 
} 
 

 
console.log(getDiffProperties({name: 'moe', age: 32},{age: 32}))
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

+0

しかし、Matchはブール値を返します。 OPは、異なるフィールドのみと同じ形状を持つオブジェクトを取得しようとしています。 –

+0

@DaveNewtonはい、ポストに申し訳ありません。 –

関連する問題