Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Разница в логически одинаковом коде при сравнение двух массивов (https://javascript.ru/forum/misc/74074-raznica-v-logicheski-odinakovom-kode-pri-sravnenie-dvukh-massivov.html)

Atoom 11.06.2018 13:05

Разница в логически одинаковом коде при сравнение двух массивов
 
Всем привет! Сможет ли кто-нибудь объяснить, почему приведённые коды имеют разницу в работе ? Первый работает, а второй нет. Были изменены лишь операторы сравнения и их return.
[// ПЕРВЫЙ КОД КОТОРЫЙ РАБОТАЕТ

function areArraySome(a, b) {

if (a.length !== b.length) {
return false;
}

for (i = 0; i < a.length; i++) {
if (a[i] !== b[i]) {
return false;
}
}
return true;
};

console.log(

areArraySome(["got", "cat", "lot"], ["got", "cat", "lot"])

);

// ВТОРОЙ КОД, КОТОРЫЙ НЕ РАБОТАЕТ, потому что были изменены операторы сравнения, и следовательно, их вывод.

function areArraySome(a, b) {

if (a.length === b.length) {
return true;
}

for (i = 0; i < a.length; i++) {
if (a[i] === b[i]) {
return true;
}
}
return false;
};

console.log(

areArraySome(["got", "cat", "lot"], ["got", "cat", "lot"])

);
]

Aetae 11.06.2018 13:49

Потому во втором:
1. Если длины массивов совпадают - сразу возвращает true.
2. Если не совпадают, начинает проверять и возвращает true при первом же совпадающем элементе.

В итоге - чушь. Нельзя просто взять и поменять false на true.)

j0hnik 11.06.2018 14:29

Первый код проверяет массивы на полное соответствие в нем примитивов.
Второй проверяет на соответствие хоть чего нибудь.


Часовой пояс GMT +3, время: 14:47.