如何检查此JavaScript数组中是否存在值?

Ose*_*eer 11 javascript arrays

我有一个JavaScript数组,其中添加到数组的每个新项都获得下一个增量数.一个例子如下(我希望我写得正确):

ArrayofPeople[0] = [{"id": "529", "name": "Bob"}];
ArrayofPeople[1] = [{"id": "820", "name": "Dave"}];
ArrayofPeople[2] = [{"id": "235", "name": "John"}];
Run Code Online (Sandbox Code Playgroud)

命名数组ArrayofPeople,为每个人存储多个数据点.

我需要知道数组中是否存在id为820的元素.怎么做?

Man*_*ijn 10

像这样的东西:

function in_array(array, id) {
    for(var i=0;i<array.length;i++) {
        return (array[i][0].id === id)
    }
    return false;
}

var result = in_array(ArrayofPeople, 235);
Run Code Online (Sandbox Code Playgroud)

  • 哇,快4年了,没有人提到此代码不起作用!该代码仅在第一个元素的id等于id参数时检查!将内部循环的主体更改为“ if(array [i] [0] .id === id)返回true;”。 (2认同)

gio*_*_13 6

您应该迭代数组并手动检查您是否具有匹配的ID:

function getPersonById(id){
    for(var i=0,l=ArrayofPeople.length;i<l;i++)
       if(ArrayofPeople[0][i].id == id)
           return ArrayofPeople[i];
    return null;
}
Run Code Online (Sandbox Code Playgroud)

当然,这是非常低效的.我建议你将对象存储到一个由人的id索引的关联数组(也就是一个对象)中.然后,由于对象不是哈希表,因此可以立即访问具有特定ID的人:

ArrayofPeople = {};
ArrayofPeople[529] = {"id": "529", "name": "Bob"};
ArrayofPeople[820] = {"id": "820", "name": "Dave"};
ArrayofPeople[235] = {"id": "235", "name": "John"};

 function getPersonById(id){
   return id in ArrayofPeople
       ? ArrayofPeople[id]
       : null;
}
Run Code Online (Sandbox Code Playgroud)