Было бы здорово, если бы вы могли просто сравнить два массива вот так:

[1,2,3] === [1,2,3]

Это было бы прекрасно! Но, к сожалению, это невозможно, потому что массивы на самом деле являются объектами в javascript. Примитивные типы можно сравнивать по их значению в javascript, например строкам и целым числам. Однако объекты являются более сложными типами и сравниваются по их ссылке или месту, где они хранятся в памяти. Таким образом, каждый раз, когда объект создается, ему дается ссылка на место, где он хранится. Таким образом, даже если объект может выглядеть идентично, его ссылка - нет.

Итак, что это значит для нас, когда мы пытаемся сравнить два массива?

Это означает, что мы не можем просто сравнивать их в упор, как мы пытались сделать выше. Нам нужно будет посмотреть на каждый отдельный элемент в массиве и сравнить его с каждым отдельным элементом другого массива.

При сравнении двух массивов самый простой способ узнать, не совпадают ли они, - это сравнить их длину. Итак, мы начнем с создания нашего метода, который выглядит так:

function compareTwoArrays(arr1, arr2) {
   if (arr1.length === arr2.length) {
      return false
   }
}

Если это правда, наши массивы определенно не идентичны, и мы можем выйти из нашей функции и вернуть false.

Следующее, на что мы хотим обратить внимание, это то, равен ли каждый элемент в arr1 каждому элементу в arr2. Для этого нам нужно будет перебирать наши массивы и сравнивать каждый элемент, который в нашем случае является целым числом, а целые числа являются примитивными типами в javascript, и их можно сравнивать!

function compareTwoArrays(arr1, arr2) {
   if (arr1.length !== arr2.length) {
      return false
   } else {
      for (let i = 0; i < arr1.length; i++){
         if (arr1[i] !== arr2[i]){
            return false
         } else {
            continue
         }
      }
   }
   return true
}

Если наш номер в arr1[i] не равен числу в том же индексе arr2, мы знаем, что это не совпадение, и поэтому мы возвращаем false и выходим из цикла. Если это совпадение, мы продолжаем нашу итерацию до следующего индекса. Как только i не будет длиннее, чем длина нашего массива, а наш оператор if никогда не будет равен true, мы завершаем наш цикл, переходим к последней строке нашей функции и возвращаем true.

Таким образом, это не так просто, как просто использовать оператор ===, но он выполняет свою работу!