比较两个不起作用的对象?

时间:2018-03-29 12:28:20

标签: javascript jquery object comparison

我在比较两个对象时遇到了问题。

我正在将传入的Object与Object Array进行比较, 查看Object是否已经在数组中。

我尝试了两种方法:

(betTemps是对象数组,tempBet是应当比较的当前对象。)

var duplicate = false;
for (let bet of this.betTemps) {
console.log(tempBet);
  console.log(bet);
  if(bet === tempBet) {
    console.log("reached");
    duplicate = true;
    break;
  }
}

if if after:

.. else if(duplicate){
  alert("The Bet is already in the List");
} ...

添加已存在于Array中的Object后的控制台输出:

控制台输出截图

enter image description here

如您所见,它们是相同的,仍然将另一个对象添加到数组中。

我也尝试过使用indexOf:

这个方法
if(this.betTemps.indexOf(tempBet) > -1){
  alert("The Bet is already in the List");
}

添加已存在于Array中的Object后的控制台输出:

控制台输出截图

enter image description here

PS:

比较前的代码:

  addBet(bet, index){
var tempBet = Object.assign({}, bet);
var select = (document.getElementById('select'+index)) as HTMLSelectElement;
select = select.options as HTMLSelectElement;
let count = 0;

tempBet.category = [];
for(let i = 0; i < 3; i++) {
    if (select[i].selected) {
      tempBet.category.push(select[i].value):
      count++;
    }
}

比较后的代码:

if (count == 0) {
  alert("There has to be at least one Category choosen!");
} else if(duplicate     <- This part changes individually which method you use ->){
  alert("The Bet is already in the List");
} else {
  this.betTemps.push(tempBet);
}

1 个答案:

答案 0 :(得分:1)

检查对象是否在数组中的最佳方法是使用数组包含函数: 就像我想检查A对象是否在B数组中一样,我会检查 (A === B.includes(A))