Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.06.2018, 13:05
Новичок на форуме
Отправить личное сообщение для Atoom Посмотреть профиль Найти все сообщения от Atoom
 
Регистрация: 11.06.2018
Сообщений: 1

Разница в логически одинаковом коде при сравнение двух массивов
Всем привет! Сможет ли кто-нибудь объяснить, почему приведённые коды имеют разницу в работе ? Первый работает, а второй нет. Были изменены лишь операторы сравнения и их 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"])

);
]
Ответить с цитированием
  #2 (permalink)  
Старый 11.06.2018, 13:39
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,661

Это не логически одинаковый код, то что он похож, но с разными операторами ничего не значит, код может абсолютно не похож, но быть лочически одинаковым. Условные операторы на то и условные, что меняют логику.
Ответить с цитированием
  #3 (permalink)  
Старый 11.06.2018, 13:49
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,505

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

В итоге - чушь. Нельзя просто взять и поменять false на true.)
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 11.06.2018, 14:29
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пересечение и разность двух массивов harold Общие вопросы Javascript 9 18.12.2013 21:41