2015-01-22 10 views
1

У меня есть сценарий, где у меня есть два разных объекта.Как сравнить два объекта

Сценария для достижения:

Из двух объектов я должен соответствовать значениям, которые имеют «A1», «В2» и т.д ...

Так как объекты значение не находятся в надлежащем порядке, цикл прерывается и пропускает некоторые значения.

В моей демонстрации объект1 имеет такое же повторяющееся значение, то есть «C3», оно должно отображаться только один раз.

Требуется окончательный вывод: мне нужно определить только согласованные значения из двух объектов и отобразить соответствующие значения «a» и «b».

Я пробовал почти 90%, но где-то небольшая ошибка разбивает мой цикл, пожалуйста, помогите мне.

Пример кода:

for(var i=0;i<obj1.results[0].loc.length;i++){ 
    var findA = obj1.results[0].loc[i].anc[0].title; 
    for(var j=0;j< obj2.ILoc.length;j++){ 
     var findB = obj2.ILoc[j].ais; 
     if(findA == findB) { 
      var a = obj1.results[0].loc[i].a; 
      var b = obj1.results[0].loc[i].b; 
      console.log(a); 
      console.log(b); 
     }  
    } 
} 

Это то, что я пробовал: Demo Link

ответ

0

Я бы рекомендовал использовать the diff module. Вы можете использовать его в node.js и в браузере.

+0

Нет другого пути, кроме node.js, если это простое решение js/jquery, было бы очень полезно. –

1

Я бы рекомендовал использовать цикл for...in, так как вы используете объекты вместо массивов.

for (variable in object) {... 
} 

Если свойство длины обоих объектов равно, то этот вид цикла поможет вам легко сравнивать объекты.

+0

Длина может быть равна или может отсутствовать. –

+0

Существует множество алгоритмов для такого сравнения, я бы рекомендовал проверить http://stackoverflow.com/questions/1068834/object-comparison-in-javascript Один из самых быстрых способов сравнения объектов достигается с помощью hasOwnProperty метод. – halfzebra