在这里,我试图编写一个将整数列表作为参数并搜索值7的代码。如果列表中有7,则该函数将返回一个布尔值,表示true,否则返回false。到目前为止,这是我尝试过的:
与我的else语句有关吗?我结束得太早了吗?还是不够快?
答案 0 :(得分:3)
JavaScript已经具有执行此操作的功能。 Array.prototype.includes()
。您可以这样使用它:
const containsSeven = list.includes(7)
如果您要查找更复杂的内容,例如某项是否为对象并且是否包含特定的键值对,则可以使用Array.prototype.some()
答案 1 :(得分:3)
您可以简单地使用数组,并按照ECMA2016使用包含,如下所示:
if([2,5,7].includes(value)) {
return true;
}
return false;
或带有列表
var flag = false;
for(var i=0; i<arguments.length; i++)
{ if(arguments[i] == this) { flag = true; break; }}
return flag;
答案 2 :(得分:2)
您可以将Array.prototype.find()的结果强制转换为boolean
,该结果将返回array
中满足所提供测试功能的第一个元素的值。否则,返回undefined
。
代码:
const list1 = [4, 5, 6, 7, 8];
const list2 = [1, 2, 3, 4, 5];
const findTheNumber = (arr, num) => !!arr.find(n => n === num);
console.log(findTheNumber(list1, 7));
console.log(findTheNumber(list2, 7));
答案 3 :(得分:2)
您对if语句的声明是错误的。 else
标签在错误的行上。如果您使用else,则应该在if
块之后。
但是将else
块向上移动并不能解决您的功能,因为如果数组中的第一个元素是 7 ,它将仅返回true
。
有很多不错的方法,例如使用高阶函数,但是看来您是该语言的新手。
编辑:因此,我建议使用以下两种简单方法之一:
1)您可以在for
循环中存储在数组中找到的 7s 的数量。然后,如果 7s 的数目为0 ,则返回false
;如果 7s 的数目大于0 <,则返回true
/ p>
2)另一种更快的方法是,在遇到{em> 7 之后且在true
循环之后,在for
循环中返回for
仅return false
。因为return
语句退出了作用域-这是您的函数-不仅for
循环将结束,而且您的函数将更早返回true
。
对于第二个选项,您的函数应如下所示:
function find_value(list) {
for (let i = 0; i < list.length; i++) {
if(list[i] == 7) {
return true
}
}
return false
}
答案 4 :(得分:0)