2016-07-29 16 views
0

So habe ich zwei JSON-Objekte und ich versuche, einen Unterschied zwischen ihnen mit Unterstreichung js zu finden. Aber aus irgendeinem Grund gibt es mir das ganze Objekt zurück, anstatt nur den Unterschied zurückzugeben. Mein Ziel ist es, das Muster zurück zu bekommen, da es das einzige, was anders ist.Finden Sie Unterschiede in Objekte mit 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)); 

Ich verstehe nicht den Anwendungsfall von _.difference richtig? Heres ein JSFiddle im Fall benötigt.

+1

[Es gibt kein "JSON-Objekt"] (http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/) – Andreas

+0

Ist kein Unterschied für eine Anordnung? – epascarello

+1

'_.difference' ist für Arrays; Es klingt eher so, als ob Sie eine vollständige Objektlösung wünschen. ZB https://github.com/flitbit/diff (Nun, das ist ein schlechtes Beispiel, aber die Bibliotheken, die Sie suchen, existieren.) –

Antwort

0

Unders hat Methode isMatch, aber keine Methode die Differenz für Objekte zurück, die 2 als Parameter übernimmt Objects und ihre Eigenschaften entsprechen

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

Sie können Ihre eigene Implementierung anlegen

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 gibt jedoch einen booleschen Wert zurück. OP versucht, ein Objekt zurück zu bekommen, das die gleiche Form wie nur die verschiedenen Felder hat. –

+0

@DaveNewton ja, es tut mir leid und Update für den Post –

Verwandte Themen