簡體   English   中英

使用javascript比較多個對象

[英]Multiple objects comparison using javascript

我有一個對象數組(多個對象)並且想將它們與動態添加的對象進行比較。

目前我的代碼看起來像

public compare(row) {
    for (var i = 0; i < row.length; i++) {
      var a = row[i];
      console.log(a, 'first array !!!!!!!');

      var b = row[i + 1];
      console.log(b, 'Second array !!!!!!!');

      if (a != undefined && b != undefined) {
        return JSON.stringify(a) === JSON.stringify(b);
      }
      else {
        return false;
      }

    }
  }

但我只能比較前兩條記錄。 有沒有辦法使用javascript動態比較對象。 提前致謝...

您的循環總是在第一個循環結束時返回。 如果發現不匹配,您只想在循環內返回 false,否則讓循環繼續。 如果它沒有發現任何不匹配,那么您就知道您的對象匹配,並且您可以返回 true。

public compare(row) {
  for (var i = 0; i < row.length - 1; i++) {
    var a = row[i];
    var b = row[i + 1];
    if (!a || !b) {
      continue;
    }

    if (JSON.stringify(a) !== JSON.stringify(b)) {
      return false;
    }
  }

  return true;
}

我還將循環設置為僅在i < row.length - 1繼續,因為row[row.length]處沒有元素。

演示

 var equal = [ { a: 1 }, undefined, { a: 1 }, { a: 1 } ]; var notEqual = [ { a: 1 }, undefined, { a: 1 }, { a: 1 }, { a: 2 } ]; function compare(row) { for (var i = 0; i < row.length - 1; i++) { var a = row[i]; var b = row[i + 1]; if (!a || !b) { continue; } if (JSON.stringify(a) !== JSON.stringify(b)) { return false; } } return true; } console.log('should be true: ', compare(equal)); console.log('should be false: ', compare(notEqual));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM