Функция сравнения массивов с нулевым объектом не работает

#javascript

#язык JavaScript

Вопрос:

Есть функция, она сравнивает 2 массива для совпадения, если они совпадают: true, в противном случае: false

Но условия говорят, что массив может иметь нулевой объект, и если он присутствует в массиве, вам нужно вывести значение false. Но я не могу понять, почему мой код не работает, я пытался писать по-разному, но результат один и тот же, независимо от того, есть ли null в массиве или нет

 var isSameTree = function(p, q) {  for(let i = 0; i lt;= p.length; i  ) {  for(let j = 0; j lt;= q.length; j  ) {  if(p[i] || q[j] == null) {  return false  }  if(p[i] == q[j]) {  return true  } else {  return false   }  }  } }; console.log(isSameTree([1,null,2], [1,2])); 
 Your input [1,2,3],[1,2,3]  Output false  Expected true  

Ответ №1:

Это условие:

 if(p[i] || q[j] == null) {  

Похоже, так и должно быть:

 if(p[i] === null || q[j] === null) {  

Кроме того, вам нужно будет подсчитывать индексы отдельно от тех, которые перебирают ваши массивы. Поэтому в вашем первом примере i не должно увеличиваться, если null это видно.

Наконец, вы используете lt;= оператор сравнения с длинами массивов, где, как я полагаю, вам потребуется lt; вместо этого.

Комментарии:

1. Теперь он просто отображает true, даже если в массиве есть null, я забыл упомянуть, что если вы поставите null в самом начале, а не в середине или конце, то функция будет работать

2. Возможно, более простым подходом было бы сначала очистить массивы. Удалите нули, затем выполните сравнение.