#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. Возможно, более простым подходом было бы сначала очистить массивы. Удалите нули, затем выполните сравнение.