我有一个功能:
function getNumber(number, array){
for(var i=0; i<array.length; i++){
if (array[i] == number) {
return true;
} else {
return false;
}
}
}
console.log(getNumber(3, [5, 6, 3, 8]));
当然它会一直返回'false',因为'return'除了array [0] == number之外的那些情况。我的问题是如何继续检查所有数组元素的进程?我知道这是基本的,但我找不到解决方案。
答案 0 :(得分:3)
您只需将return false;
语句移动到函数末尾即可。
这意味着如果找到一个值,那么迭代将在返回true
时停止。如果未找到,则返回false
。
function getNumber(number, array){
for(var i=0; i<array.length; i++){
if (array[i] == number) {
return true;
}
}
return false;
}
console.log(getNumber(3, [5, 6, 3, 8]));
答案 1 :(得分:2)
只有在检查完所有值后才返回false值
function getNumber(number, array){
for(var i=0; i<array.length; i++){
if (array[i] == number) {
return true;
}
}
return false;
}
答案 2 :(得分:2)
你必须移动else并在for的末尾返回false,否则你的第一个值不匹配,将返回false。 您的代码应更改为:
function getNumber(number, array){
for(var i=0; i<array.length; i++){
if (array[i] == number) {
return true;
}
}
return false;
}
console.log(getNumber(3, [5, 6, 3, 8]));
你所做的就是这样:
var a = [5, 6, 3, 8];
console.log(a.indexOf(3));
如果元素不存在,indexOf将返回-1,否则返回元素的索引。这里的文档: https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
答案 3 :(得分:0)
在if (array[i] == number)
将此数组值存储在任何临时值(例如temp = array[i]
时)执行循环后,您不能返回true,然后您可以返回值return k
答案 4 :(得分:-1)
如果您定位的是现代浏览器或Node.js,则可以使用Array#some
:
array.some(function(element) { return element === number });
完整的例子是:
var check = function(number, array) {
return array.some(function(element) { return element === number });
}
console.log(check(3, [ 1, 2, 3 ])); // true
console.log(check(5, [ 1, 2, 3 ])); // false
&#13;