首页 > 解决方案 > 比较在 Javascript 中不起作用的 2 个数组的值

问题描述

我试图在两个数组之间进行比较,无论它们在同一个地方具有相同的值,在不同的地方具有相同的值还是根本不一样。比较后我想输入一个字符到第三个数组来表示结果。我的代码由于某种原因不起作用......它没有正确比较。我究竟做错了什么?

var numInput = [1,2,3,4];
var numArr = [2,5,3,6];
var isBp;
var i,j;
  for ( i = 0; i < 4; i++)
   {
     if (numInput[i] == numArr[i])
     {  isBP[i] = "X"; }
     else
     {
       for ( j = 0; j<4; j++)
       {
         if (numInput[i] == numArr[j])
          {isBP[i] = "O";}
         else
          { isBP[i] = "-"; }
       }

     }

     }

结果应该是:

isBP = [O,-,X,-]

标签: javascriptarrays

解决方案


看起来你想输出:

  • X 如果相同索引处的数字相等
    • 如果它们在相同的索引处不相等,但该数字在其他地方找到
  • O 如果第一个数组中的数字根本不存在于第二个数组中

如果是这样:

var a1 = [1, 2, 3];
var a2 = [1, 3, 4];

var result = a1.map((n, i) => {
  var match = a2.indexOf(n);
  if (match === i) {
    return "X"
  } else if (match > -1) {
    return "O";
  } else {
    return "-";
  }
});

console.log(result); // prints [ 'X', '-', 'O' ]

推荐阅读