我正在尝试编写一个函数来检查数组在数组的第一个或最后一个位置是否包含特定数字。
那里的所有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);
答案 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);