Привет. Я новичок. Прохожу книгу Javascript для детей. Почему в правильном варианте решения задачи условие проверяет каждый символ массива, и только тогда выдает true, а в моем решении если любой элемент массива == любому элементу массива с таким же индексом, то тоже будет true. т.е. игнорирует соответствие остальные элементов. Когда я ставлю условие не ==, а != и меняю местами return false и true, то все работает как надо. P.S. условие array1[i] == array2[i] сознательно опустил.
Задача: Напишите функцию areArraysSame, которая принимает два массива с числами в качестве аргументов. Она должна возвращать true, если эти массивы одинаковые (то есть содержат одни и те же числа в одном и том же порядке), или false, если массивы различаются. Убедитесь, что ваша функция работает правильно, запустив такой код:
areArraysSame([1, 2, 3], [4, 5, 6]);
false
areArraysSame([1, 2, 3], [1, 2, 3]);
true
areArraysSame([1, 2, 3], [1, 2, 3, 4]);
false
Подсказка 1: вам понадобится перебрать все значения из первого массива в цикле for и убедиться, что они совпадают со значениями из второго массива. Вы можете вернуть false прямо из тела for, если обнаружите несовпадающие значения.
Подсказка 2: вы можете сразу выйти из функции, пропустив цикл for, если у массивов разная длина
***
Вот правильное решение:
var areArraysSame = function (array1, array2) {
for (var i = 0; i < array1.length; i++) {
if (array1[i] !== array2[i] || array1.length !== array2.length) {
return false;
}
}
return true;
}
console.log(areArraySame([1, 2, 3], [1, 2, 5])); //false
console.log(areArraySame([1, 2, 3], [3, 2, 4])); // false
console.log(areArraySame([1, 2, 3], [4, 5, 6])); false
console.log(areArraySame([1, 2, 3], [1, 2, 3])); true
***
А вот мое. Почему если я просто написал условие не через !=, а через == везде выдает true если хотя бы один элемент из массива совпадает.
var areArraySame = function (array1, array2) {
for (let i = 0; i < array1.length; i++) {
if (array1[i] === array2[i]) {
return true;
}
}
return false;
}
console.log(areArraySame([1, 2, 3], [1, 2, 5])); //true
console.log(areArraySame([1, 2, 3], [3, 2, 4])); // true
console.log(areArraySame([1, 2, 3], [4, 5, 6])); // false
console.log(areArraySame([1, 2, 3], [1, 2, 3])); true