В. Проверьте, имеют ли 2 массива одинаковые значения в одинаковом порядке. - PullRequest
0 голосов
/ 25 апреля 2020

Я просмотрел другие посты, в которых якобы решена эта проблема, но этот метод все еще не работает для меня. Я столкнулся с ошибкой в ​​более крупной программе, которую я писал, но я сузил ошибку до этого метода.

Я установил ячейку в = isMatch ({1,2,3}, {1,2,3}), чтобы проверить, работает ли мой метод. Ячейка вычисляется в False, и я не знаю, почему или как это исправить.

Прежде чем я проверил stackoverflow, я изначально написал код, идентичный ответу этого сообщения .

Вот код, который у меня сейчас есть.

function isMatch(arr1,arr2){//Returns True if same Array values in same location
  if(arr1.length !== arr2.length)
        return false;
    for(var i =0; i<arr1.length; i++) {
        if(arr1[i] !== arr2[i])
            return false;
    }

    return true;
}

1 Ответ

1 голос
/ 25 апреля 2020

Вы сравниваете 2D массив. {1,2,3} === [[1,2,3]], а не [1,2,3].

Для сравнения размерного массива вы можете указать:

function isMatch(arr1, arr2) {
  if (typeof arr1 !== typeof arr2)
    throw new TypeError('Arrays or elements not of same type!');
  if (Array.isArray(arr1))
    return (
      arr1.length === arr2.length && arr1.every((e, i) => isMatch(e, arr2[i]))
    );
  return arr1 === arr2;
}

console.info(isMatch([[1], [2]], [[1], [2]]));
console.info(isMatch([[1, 2]], [[1, 2]]));
console.info(isMatch([[1, 2]], 1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...