Функция для проверки, равен ли первый ИЛИ последний элемент в массиве определенному числу - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь написать функцию, чтобы проверить, содержит ли массив конкретное число в первой или последней позиции массива.

Все console.log примеры там должны печатать true. Способ его печати, я не думаю, что я должен писать в console.log в моей функции. Я не могу заставить их всех показать true.

function checkForNumber(arr, num) {
  if (arr[0] === num) {
    //console.log(true) removed
    return true
  } else if (arr.slice(-1)[0] === num) {
    //console.log(true) removed
    return true
  } else
    return false;
}
console.log(checkForNumber([4, 2, 5, 3], 4) === true);
console.log(checkForNumber([4, 2, 5, 3], 3) === true);
console.log(checkForNumber([4, 2, 5, 3], 2) === false);
console.log(checkForNumber([4, 2, 5, 3], 13) === false);

Ответы [ 5 ]

0 голосов
/ 31 августа 2018

function checkForNumber(arr, num) {
  return arr[0] === num || arr[arr.length - 1] === num;
}
console.log(checkForNumber([4, 2, 5, 3], 4) === true);
console.log(checkForNumber([4, 2, 5, 3], 3) === true);
console.log(checkForNumber([4, 2, 5, 3], 2) === false);
console.log(checkForNumber([4, 2, 5, 3], 13) === false);

if (condition) return true и аналогичные являются анти-паттернами. Если функция является предикатом (т.е. возвращает логическое значение), просто верните результат логической операции.

0 голосов
/ 31 августа 2018

Я думаю, что этого достаточно, верно? Ура!

function checkForNumber(arr, num)
{
    // for OR
    return ((arr[0] === num) || (arr[arr.length-1] === num));
    // for AND
    // return ((arr[0] === num) && (arr[arr.length-1] === num));
}
console.log(checkForNumber([4, 2, 5, 3], 4) === true);
console.log(checkForNumber([3, 2, 5, 4], 3) === true);
console.log(checkForNumber([0, 4, 4, 8], 2) === false);
console.log(checkForNumber([4, 2, 5, 3], 13) === false);
0 голосов
/ 31 августа 2018

Я пытался сделать это во время редактирования, но я заменил console.log (true) внутри функции на возвращение true. Это решило мой вопрос.

Правильный код здесь снова:

function checkForNumber(arr, num) {
  if (arr[0] === num) {
     //console.log(true) removed
     return true
   } else if (arr.slice(-1)[0] === num) {
     //console.log(true) removed
     return true
   } else
  return false;
 }
console.log(checkForNumber([4, 2, 5, 3], 4) === true);
console.log(checkForNumber([4, 2, 5, 3], 3) === true);
console.log(checkForNumber([4, 2, 5, 3], 2) === false);
console.log(checkForNumber([4, 2, 5, 3], 13) === false);
0 голосов
/ 31 августа 2018

Вот полностью реализованное решение, которое я предложил в комментариях.

function checkForNumber(arr, num) {
  if (arr[0] === num || arr[arr.length - 1] === num) {
    return true
  } else
    return false;
}

console.log(checkForNumber([4, 2, 5, 3], 4));
console.log(checkForNumber([4, 2, 5, 3], 3));
console.log(checkForNumber([4, 2, 5, 3], 2));
console.log(checkForNumber([4, 2, 5, 3], 13));
console.log(checkForNumber([4, 2, 5, 4], 4));
0 голосов
/ 31 августа 2018

В вашей первой версии вашего вопроса у вас было console.log(true); вместо return true;, и это было неправильно.

function checkForNumber(arr, num)
{
	if(arr[0] === num)
	{
		//console.log(true);
		return true;
	}
	else if (arr[arr.length-1] === num)
	{
		//console.log(true);
		return true;
	}
	else return false;
}
console.log(checkForNumber([4, 2, 5, 3], 4) === true);
console.log(checkForNumber([4, 2, 5, 3], 3) === true);
console.log(checkForNumber([4, 2, 5, 3], 2) === false);
console.log(checkForNumber([4, 2, 5, 3], 13) === false);

Вы тоже можете написать:

function checkForNumber(arr, num)
{
	return  arr[0] === num || arr[arr.length - 1] === num;
}

console.log(checkForNumber([4, 2, 5, 3], 4) === true);
console.log(checkForNumber([4, 2, 5, 3], 3) === true);
console.log(checkForNumber([4, 2, 5, 3], 2) === false);
console.log(checkForNumber([4, 2, 5, 3], 13) === false);

Но ваша вторая версия кода верна, и если вы напишите ее таким образом:

function checkForNumber(arr, num)
{
    return  arr[0] === num || arr.slice(-1)[0] === num;
}

тогда это на один символ даже короче:

function checkForNumber(arr, num)
{
    return  arr[0] === num || arr[arr.length - 1] === num;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...