2013-08-30 6 views
1

값이 많은로드를 해당 키와 함께 삽입하는 배열이 있습니다. 그들은 console.log을 할 때 배열에서 모두 볼 수 있기 때문에 잘 삽입됩니다.연관 배열의 키를 사용하여 값 검색

문제는 각 키를 사용하여 배열에서 값을 검색 할 수없는 것입니다.

여기 내 코드입니다.

var personArray = []; 

personArray.push({ 
    key: person.id, 
    value:person 
}); 

var personID = person.id; 

console.log(personArray.personID); 

는 또한 console.log(personArray[personID]; 시도했지만이 중 하나가 작동하지 않습니다.

내 콘솔에서 얻는 값은 undefined입니다.

답변

4

당신이하고있는 일은 사전을 사전에 집어 넣는 것입니다.

var personDict = {} 
personDict[person.id] = person 

을 다음 personDict[personID] 작동합니다 : person.id이 고유 경우에, 당신은이 작업을 수행 할 수 있습니다. 당신이 당신의 구조를 유지하려면, 당신은 그것을 배열 내에서 검색 할 수 있습니다

var personArray = []; 

personArray.push({ 
    key: person.id, 
    value:person 
}); 

var personID = person.id; 

var search = function(id) { 
    var l = personArray.length; 
    for (var i = 0; i < l; i++) { 
     var p = personArray[i]; 
     if (p.key === id) { 
      return p.value; 
     } 
    } 
    return null; 
}; 
search(personID); 
+0

감사합니다. 자바 스크립트에 익숙하지 않으므로 구문에 여전히 어려움이 있습니다. – StuStirling

0

당신은 @freakish, 에 의해 제안 사전 형식을 사용하거나 필요한 객체를 찾기 위해 필터 기능을 사용할 수 있습니다. 예를 들어

:

var personArray = []; 
var person = {id: 'aki', value:'Akhil'} 
personArray.push({ 
    key: person.id, 
    value:person 
}); 
personArray.filter(function(item){ 
    return item.key == 'aki' 
}); 
관련 문제