2011-10-12 3 views
10

자바 스크립트 배열이 있는데 배열에 추가 된 각 새 항목은 다음 증분 값을 가져옵니다.이 JavaScript 배열에 값이 있는지 확인하는 방법은 무엇입니까?

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

배열이 ArrayofPeople 이름, 각 사람에 대해 여러 개의 데이터 포인트를 저장 다음과 같이 예 (I 메신저 제대로이 글을 쓰는 희망) 일 것이다.

id가 820 인 요소가 배열에 있는지 여부를 알아야합니다. 어떻게이 일을 끝낼 수 있습니까?

답변

9

뭔가 같은 : 객체가 해시 테이블보다 아무것도 없기 때문에 그런 다음, 특정 ID를 가진 사람에 대한 액세스는 즉각적

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); 
+0

이 그것이 거짓이라면 나를 위해 작동하는 것 같다,하지만이 사실이라면 그것은 모두 작동을 멈 춥니 다. 이 검사에서 내가 뭘 잘못하고 있니? :'if (in_array (ArrayofPeople, 235) == true) {alert ("이벤트 배열"); } else {alert ("배열에 없습니다"); }' – Oseer

+0

당신은'in_array (arrayofpeople, '235')'를 수행해야하거나 배열의 id 속성에서 ""을 제거해야하는 문자열로 ID를 저장하기 때문에 –

+1

와우, 거의 4 년 동안 아무도 이것을 언급하지 않았습니다. 코드가 작동하지 않습니다! 이 코드는 첫 번째 요소의 id가 id 매개 변수와 같은지 확인합니다. 내부 루프의 본문을 if (array [i] [0] .id === id)로 변경하면 true를 반환합니다. –

5

당신은 배열을 반복하고 일치하는 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; 
} 

, 이것은 매우 비효율적이다. 그 사람의 ID에 의해 인덱싱 된 연관 배열 (a.k.a. 개체)에 개체를 저장하는 것이 좋습니다.

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; 
} 
1
ArrayofPeople = new Array(); 
ArrayofPeople[0] = [{"id": "529", "name": "Bob"}]; 
ArrayofPeople[1] = [{"id": "820", "name": "Dave"}]; 
ArrayofPeople[2] = [{"id": "235", "name": "John"}]; 

var str = '820'; 
var is_found = 'not found'; 
for(item in ArrayofPeople){ 
    target = ArrayofPeople[item][0]; 
    if(target['id'] === str) 
     is_found = 'found'; 
} 
alert(is_found); 
2

당신은 비교적 새로운 사용할 수 있습니다 Array.prototype.some() 항목이 있는지 여부를 확인하십시오. (심이 문서에 나와 있습니다) :

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

 
function in_array(array, id) 
 
{ 
 
    return array.some(function(item) { 
 
     return item[0].id === id; 
 
    }); 
 
} 
 

 
console.log(in_array(ArrayofPeople, '820')); // true
,739,

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

var result = IsIdInArray(ArrayofPeople, 820); 
관련 문제