Javascript 如何将一维向量与二维数组的元素进行比较

Javascript 如何将一维向量与二维数组的元素进行比较,javascript,arrays,Javascript,Arrays,在我的JavaScript小程序中,我必须检查a和b输入值:如果它们是新的一对,则这一对将作为1D向量添加到小程序的历史记录中 因此,我制作了一个历史2D数组,其中存储了所有新的对。程序循环数组,将新对与历史数组的每一行进行比较。然而,我有一个问题:当比较的结果应该是真的(即,当I==1时),我得到了一个假结果 我读了这一页: 和其他几个网页,没有找到我的麻烦的原因 这个帖子似乎讨论了另一个问题(但是,与我的问题相关): 我曾尝试比较==和===运算符,两种情况都没有成功 我想我的错误是一些小

在我的JavaScript小程序中,我必须检查a和b输入值:如果它们是新的一对,则这一对将作为1D向量添加到小程序的历史记录中

因此,我制作了一个历史2D数组,其中存储了所有新的对。程序循环数组,将新对与历史数组的每一行进行比较。然而,我有一个问题:当比较的结果应该是真的(即,当I==1时),我得到了一个假结果

我读了这一页: 和其他几个网页,没有找到我的麻烦的原因

这个帖子似乎讨论了另一个问题(但是,与我的问题相关):

我曾尝试比较==和===运算符,两种情况都没有成功

我想我的错误是一些小错误,但我有几个小时的时间试图解决它,但没有成功(我是Javascript新手)


在循环的每个步骤中;这一行在MRE中被禁用。)

您可以使用不同的名称
历史
,因为这是
窗口的保留变量。历史

然后更改循环并仅检查长度,如果发现重复,则通过设置标志
isRepeatedPair
退出循环

检查必须比较每个元素,因为如果一个相等的数组共享相同的对象引用,那么它实际上是相同的。如果只有值,则需要检查这些值

最后再次检查标志,如果
false
,则将实际对推送到历史记录中

var historyX=[[1,1],[1,2]],
numA=1,
麻木=2,
currentPair=[numA,numB],
isRepeatedPair=false,
i=0;
而(iconsole.log(historyX)对象(如数组)可以完全相同,而不必相等。请在控制台中检查
[1,2,3]===[1,2,3]
。比较对象时,
=
==
都比较标识。Sidenote可能重复,如果(!history.some([a,b])=>a==numA和&b==numB))history.push([numA,numB]),则可以将此检查写入

var history = [[1, 1], [1, 2]];
var numA = 1;
var numB = 2;
var currentPair = [numA, numB];
var isRepeatedPair = false;
var i = 0;

while ((i < history.length) && (isRepeatedPair == false)) {
    isRepeatedPair = (currentPair === history[i]);
    // alert("i= " + i + "\n" + "Current pair: " + currentPair + "\n" + "Pair in history: " + history[i]+ "\n" + "Is repeated pair? " + isRepeatedPair);
    i = i + 1;
}

history.push(currentPair);
alert("i= " + i + "\n" + "Current pair: " + currentPair + "\n" + "Pair in history: " + history[i]+ "\n" + "Is repeated pair? " + isRepeatedPair);