@evg34rozenber

Почему мое решение задачи не верно?

Задача такая:
Напишите функцию 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


Решение задачи такое:
var areArraysSame = function (argument1, argument2) {
			for (var i = 0; i < argument1.length; i++) {
				if (argument1[i] !== argument2[i] || argument1.length !== argument2.length) {
				return false;
			} 
			}
			return true;
		}

Я же написал так:
var areArraysSame = function (argument1, argument2) {
			for (var i = 0; i < argument1.length; i++) {
				if (argument1[i] !== argument2[i] || argument1.length !== argument2.length) {
				return false;
			} else {
				return true;
			}
			}
		}

Пожалуйста объясните мне, почему мое решение неверно?
  • Вопрос задан
  • 2633 просмотра
Решения вопроса 2
@UPSA
anykey. Я не программист, я просто ленивый.
На сравнении первого элемента она выдаст ответ не проверяя следующие элементы. В первом варианте выдаст true пройдя все элементы массива.
Ответ написан
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS


https://codepen.io/KorniloFF/pen/jdWXWj?editors=1011

function areArraysSame (argument1, argument2) {
  if(argument1.length !== argument2.length) return false;
    for (var i = 0; i < argument1.length; i++) {
    if (argument1[i] === argument2[i]) {
        continue;
      } else {
        return false;
      }
    }
  return true;
 };

// test
console.log(areArraysSame([1,2,3], [1,2,3]));
console.log(areArraysSame([1,2,3], [1,2,'3']));
console.log(areArraysSame([1,2,3], [1,2,3, 4]));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@mastevoy
/*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
*/
function areArraysSame (m1,m2)
{
for(var i = 0; i < m1.length; i++)
{
if(m1[i] !== m2[i] || m1.length !== m2.length )
{
console.log (false);
}
else
{
console.log (true);
}
}

}

у меня все получилось. Просто return не использовал.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы