如何在不使用for循环或任何数组方法的情况下,检查元素是否存在于数组中或是否存在于javascript中

时间:2018-09-09 05:32:33

标签: javascript arrays

如何在不使用for循环或mapreduce之类的任何数组方法的情况下,检查元素是否存在于数组中? let numList= [1,2,3,6,9,2,-8,20];我想检查9和30,如果不存在则不使用for循环或任何数组方法

3 个答案:

答案 0 :(得分:7)

我想一个选择是将数组转换为Set并检查Set.has

let numList= [1,2,3,6,9,2,-8,20];
const set = new Set(numList);
console.log(set.has(9));
console.log(set.has(30));

检查Set是否具有元素的复杂度为O(1),这比任何数组方法或for循环(O(N)或{ {1}},所以当您有一个非常大的数组并且想要检查它是否具有某些元素时,首先将其转换为O(log N)是一个好主意。

答案 1 :(得分:1)

您可以使用JSON.stringify将数组转换为字符串,并使用String includes检查字符串是否包含特定的搜索值

let numList = [1, 2, 3, 6, 9, 2, -8, 20];
let m = JSON.stringify(numList)
console.log(m.includes(-8))

答案 2 :(得分:1)

如果可以使用while循环,则可以实现二进制搜索。由于是面试问题,如果这符合他们的需求,我不会感到惊讶。

这是伪代码中的传统算法,是从Rosetta Code借来的

/* gets a string */
printf("Enter the string: ");
scanf("%s", s);

/* finds length of the string */
while(s[size]!='\0')
{
    size++;
}

/* sorts the elements of the string using bubble sort */
for(j=0; j<size-1; j++)
{
    for(i=0; i<(size-1-i); i++)
    {
        if(s[i]>s[i+1])
        {
            temp=s[i];
            s[i]=s[i+1];
            s[i+1]=temp;
        }
    }

    /* displays pass by pass output */
    printf("\nIteration %d\n", j+1);
    printf("%s\n", s);
}

return 0;