2016-07-29 1 views
0

Итак, у меня есть два объекта 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 правильно? Heres a JSFiddle в случае необходимости.

+1

[Нет такой вещи, как «объект JSON»] (http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/) – Andreas

+0

Разница между массив? – epascarello

+1

'_.difference' для массивов; это звучит больше похоже на то, что вы хотите полнофункциональное решение. Например, https://github.com/flitbit/diff (ну, это плохой пример, но библиотеки, которые вы ищете, существуют.) –

ответ

0

Подчеркивание имеет метод isMatch, но нет метода, который будет возвращать значение для объектов, который принимает 2 в качестве параметра Objects и соответствует их свойству

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 да получил, извините и обновил для сообщения –

 Смежные вопросы

  • Нет связанных вопросов^_^