Javascript 如何将一维向量与二维数组的元素进行比较
在我的JavaScript小程序中,我必须检查a和b输入值:如果它们是新的一对,则这一对将作为1D向量添加到小程序的历史记录中 因此,我制作了一个历史2D数组,其中存储了所有新的对。程序循环数组,将新对与历史数组的每一行进行比较。然而,我有一个问题:当比较的结果应该是真的(即,当I==1时),我得到了一个假结果 我读了这一页: 和其他几个网页,没有找到我的麻烦的原因 这个帖子似乎讨论了另一个问题(但是,与我的问题相关): 我曾尝试比较==和===运算符,两种情况都没有成功 我想我的错误是一些小错误,但我有几个小时的时间试图解决它,但没有成功(我是Javascript新手)Javascript 如何将一维向量与二维数组的元素进行比较,javascript,arrays,Javascript,Arrays,在我的JavaScript小程序中,我必须检查a和b输入值:如果它们是新的一对,则这一对将作为1D向量添加到小程序的历史记录中 因此,我制作了一个历史2D数组,其中存储了所有新的对。程序循环数组,将新对与历史数组的每一行进行比较。然而,我有一个问题:当比较的结果应该是真的(即,当I==1时),我得到了一个假结果 我读了这一页: 和其他几个网页,没有找到我的麻烦的原因 这个帖子似乎讨论了另一个问题(但是,与我的问题相关): 我曾尝试比较==和===运算符,两种情况都没有成功 我想我的错误是一些小
在循环的每个步骤中;这一行在MRE中被禁用。)您可以使用不同的名称
历史
,因为这是窗口的保留变量。历史
然后更改循环并仅检查长度,如果发现重复,则通过设置标志isRepeatedPair
退出循环
检查必须比较每个元素,因为如果一个相等的数组共享相同的对象引用,那么它实际上是相同的。如果只有值,则需要检查这些值
最后再次检查标志,如果false
,则将实际对推送到历史记录中
var historyX=[[1,1],[1,2]],
numA=1,
麻木=2,
currentPair=[numA,numB],
isRepeatedPair=false,
i=0;
而(i console.log(historyX)代码>对象(如数组)可以完全相同,而不必相等。请在控制台中检查[1,2,3]===[1,2,3]
。比较对象时,=
和==
都比较标识。Sidenote可能重复,如果(!history.some([a,b])=>a==numA和&b==numB))history.push([numA,numB]),则可以将此检查写入现代JS中的代码>
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);