检查一个数组是否包含一个给定的数字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查一个数组是否包含一个给定的数字相关的知识,希望对你有一定的参考价值。
写一个函数来检查一个数组是否包含一个特定的数字。
Examplescheck([1, 2, 3, 4, 5], 3) ➞ true
我的代码(我知道可以做得更简单)
function check(arr, el)
let sum = 0
for (i= 0; i<= arr.length; i++)
if (arr[i]==el)
sum++;
else
if (sum == 1)
return true;
else false;
请你帮我理解一下为什么这段代码不能用?
答案
你有一个内置的函数 includes
. 使用实例。
[1,2,3,4].includes(3) // return true
[1,2,3,4].includes(8) // return false
其他一些选项:
some
如果给定的条件为真,则返回true 如果给定的条件为真,则返回至少1个数组项,所以你可以这样做。arr.some(item => item === value)
在低级别的情况下,你可以这样做:
for(let item of arr) if(item === value) return true; return false;
另一答案
你的代码有一个空的 else子句。
function check(arr, el)
let sum = 0
for (i= 0; i<= arr.length; i++)
if (arr[i]==el)
sum++;
else //<-- this else clause is empty and is causing you trouble
if (sum == 1) //This will only work if the element appears exactly once
return true;
else false; //<-- and this won't return false as you intend.
这是你的代码改正后的。
function check(arr, el)
let sum = 0
for (i= 0; i<= arr.length; i++)
if (arr[i]==el)
sum++;
if (sum >= 1)
return true;
return false;
下面是我的例子
function check(arr, el)
for(let i = 0; i < arr.length;i++)
if(arr[i] === el)
return true;
return false;
希望对你有用
另一答案
有几件事。
在第2行末尾加一个分号。(这不一定是必要的,但可以防止可能出现的错误。)在第3行中删除i<=arr.length中的等号,以确保不会超出数组的索引。
删除第3行中的i<=arr.length中的等号,以保证你不会超出一个不存在的数组索引。
你不需要在第6行中使用 else。你没有代码要在 else 语句中运行,所以没有必要。
在第10行,你的else语句缺少了卷曲的括号。你需要在 else 语句中运行的代码块周围加上这些括号。另外,你缺少了return这个词。
我已经在这里做了一个正确的。
function check(arr, el)
let sum = 0;
for (i = 0; i < arr.length; i++)
if (arr[i]==el)
sum++;
if (sum == 1)
return true;
else
return false;
另一答案
// Correction:
function check(array, element)
let itContains = false // Initialized to be boolean.
for (let i = 0; i < array.length; i++) // If you start with 0 you use '<' not '<='. Just count :)
if (array[i] === element) // Use '===' if you want to check if it is of the same type and value.
itContains = true
break // You do not need to go through the whole loop. You break it when you find a positive match.
// You do not need 'else' here because you initialized 'itContains' to be false.
return itContains // You just return proper boolean - false or true.
console.log(check([1, 2, 3, 4], 2)) // Returns 'true'.
console.log(check([1, 2, 3, 4], 5)) // Returns 'false'.
// Elegant solution:
function checkElegant(array, element)
return array.includes(element) // 'includes' method returns true or false.
console.log(checkElegant([1, 2, 3, 4], 2)) // Returns 'true'.
console.log(checkElegant([1, 2, 3, 4], 5)) // Returns 'false'.
以上是关于检查一个数组是否包含一个给定的数字的主要内容,如果未能解决你的问题,请参考以下文章