gpt4 book ai didi

javascript - 如何比较一维向量与二维数组的元素

转载 作者:行者123 更新时间:2023-11-30 19:07:51 25 4
gpt4 key购买 nike

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

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

我阅读了这个基本页面: https://www.w3schools.com/js/js_arrays.asp和其他几个网页一样,没有找到我麻烦的原因。

这个线程似乎在谈论另一个问题(但是,与我的问题有关): Convert a 2D JavaScript array to a 1D array

我曾尝试与 == 和 === 运算符进行比较,但这两种情况都没有成功。

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

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);

当比较结果应该为真时(即当 i == 1 时),我得到了假结果。

(我已经用命令检查过了:

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

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

最佳答案

您可以取一个不同的名称 history,因为这是 window.history 的保留变量。

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

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

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

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

while (i < historyX.length) {
if (currentPair[0] === historyX[i][0] && currentPair[1] === historyX[i][1]) {
isRepeatedPair = true;
break;
}
i++;
}

if (!isRepeatedPair) {
historyX.push(currentPair);
}

console.log(historyX);

关于javascript - 如何比较一维向量与二维数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58798291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com