验证数组中的第一个或最后一个项目是否等于某个数字的函数

时间:2018-08-30 21:15:09

标签: javascript arrays function

我正在尝试编写一个函数来检查数组在数组的第一个或最后一个位置是否包含特定数字。

那里的所有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 :(得分:5)

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等是反模式。如果该函数是谓词(即返回布尔值),则只需返回逻辑运算的结果即可。

答案 1 :(得分:1)

在您的 first version of your question 中,您拥有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);

但是您的 second code version 是正确的,并且如果您以这种方式编写它:

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;
}

答案 2 :(得分:1)

这是我在评论中建议的完全实现的解决方案。

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));

答案 3 :(得分:1)

我认为这就足够了,对吧? 干杯!

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);

答案 4 :(得分:0)

我在编辑时尝试执行此操作,但是我用return 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);