检查一个数组是否包含一个给定的数字

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;

希望对你有用

另一答案

有几件事。

  1. 在第2行末尾加一个分号。(这不一定是必要的,但可以防止可能出现的错误。)在第3行中删除i<=arr.length中的等号,以确保不会超出数组的索引。

  2. 删除第3行中的i<=arr.length中的等号,以保证你不会超出一个不存在的数组索引。

  3. 你不需要在第6行中使用 else。你没有代码要在 else 语句中运行,所以没有必要。

  4. 在第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'.

以上是关于检查一个数组是否包含一个给定的数字的主要内容,如果未能解决你的问题,请参考以下文章

检查数组是不是包含另一个数组的所有元素

如何检查给定的 c++ 字符串或 char* 是不是仅包含数字?

如何检查数组中的数字是不是相等?

给定一个数字,检查数字是不是形成一个加法方程?

如何检查字节数组是否包含Java中的Unicode字符串?

javascript 给定一个包含n个不同数字的数组,取自0,1,2,...,n,找到数组中缺少的数字。