当前位置: 首页 > 知识库问答 >
问题:

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

刘松
2023-03-14

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

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

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

这个线程似乎讨论了另一个问题(然而,与我的问题相关):将2D JavaScript数组转换为1D数组

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

我想我的错误是一些小错误,但我有几个小时的时间试图解决它,但没有成功(我是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中禁用此行。)(

共有1个答案

郭远
2023-03-14

您可以使用不同的名称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);
 类似资料:
  • 问题内容: 我已经有了用于将一维二维转换为一维二维的代码,但是我不知道如何将其转换。这是我的代码: 问题答案: 您正在寻找类似的东西: 与以下内容相同: 但试图帮助进一步解释这个概念。

  • 我正在制作一个输血游戏。我有2个数组列表。一个有献血者的血型和姓名,第二个有接受者的血型和姓名。所有的名字我都会得到用户的输入并将它们存储在一个数组中(接受者数组列表更大)。 我不知道如何使用布尔2D数组将两个数组列表进行比较(应该返回true或false)。例如,在所有捐赠者和接受者输入姓名和血型后,程序应该告诉他们是否匹配。 我知道下面的代码是错误的,但我不知道怎么做。

  • 我试图计算2D数组的每个元素,但出于某种原因,我做错了:

  • 问题内容: 我有, 如图所示这里,我们创建一个从原点的二维之一。但是,如何迭代内部,以便可以在 其中 创建 列索引* 和 行索引 而又不 创建新 索引 呢?我希望将其索引打印到二维数组 (2x5) 时看起来像这样: __ * 我认为这里的主要问题是获取 列索引 和 行索引 而没有创建二维 索引 。是不是 问题答案: 如果要以行为主的顺序,给定row ,column 并且伪造(缺乏更好的术语)带有列

  • 问题内容: 我有这种数组 我需要将其转换为一维数组。我怎样才能做到这一点? 例如这样 任何内置函数的php均可用于此数组转换? 问题答案: 对于您有限的用例,可以这样做: 当子数组对此有很多条目时,可以将其更一般化:

  • 定义为一维数组,定义为二维数组,但这一行为是两个夜晚。原因是什么? 以及该代码的输出: