Разница в логически одинаковом коде при сравнение двух массивов
Всем привет! Сможет ли кто-нибудь объяснить, почему приведённые коды имеют разницу в работе ? Первый работает, а второй нет. Были изменены лишь операторы сравнения и их 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"]) ); ] |
Потому во втором:
1. Если длины массивов совпадают - сразу возвращает true. 2. Если не совпадают, начинает проверять и возвращает true при первом же совпадающем элементе. В итоге - чушь. Нельзя просто взять и поменять false на true.) |
Первый код проверяет массивы на полное соответствие в нем примитивов.
Второй проверяет на соответствие хоть чего нибудь. |
Часовой пояс GMT +3, время: 14:47. |