2010-08-03 2 views
3

현재, I는 다음에 사용 JS 차원 배열을 생성하고 :Javascript의 연관 배열?

var arr = [["name1", "place1", "data1"], 
      ["name2", "place2", "data2"], 
      ["name3", "place3", "data3"]]; 

내가 도착을 이용하여 각각의 요소를 액세스 할 수 [0] 나, 언 [1]. 그러나 어쨌든 나는 다음과 같은 키를 사용하여 그것들에 접근 할 수있다 : arr [ "name1"]이 나에게 첫 번째 것을 주어야한다. 어떤 제안? 나는 Hashmap과 같은 기능을 찾고 있다고 생각한다.

답변

3

할 수있는 유일한 방법은 객체에 배치하는 것입니다.

var arr = { 
    name1 : ["name1", "place1", "data1"], 
    name2 : ["name2", "place2", "data2"], 
    name3 : ["name3", "place3", "data3"] 
}; 
+0

굉장 ... 매력처럼 작동합니다. 많은 감사합니다! – Legend

+0

@Legend - 답변을 수락하는 것을 잊지 마십시오. 앞으로도 계속 품질에 대한 해답을 얻으실 수 있습니다. * 플러스로하면 멋지게 보입니다. :) * – ChaosPandion

+0

물론 ... 답변을 수락하는 데 15 분의 시간 제한이 있습니다. – Legend

1

자바 스크립트는 프로토 타입 기반 동적 언어입니다. 원할 때 개체를 만들고 구조를 변경할 수 있습니다.

var o = {name1: {place1: data1}, name2: {place2: data2}}; 

과에 액세스합니다 :

o.name1 

룩업 구현하지만 변화는 (크롬 제외하고 종종 매우 느릴 수 변화 특성을 많이 가지고 때와 그 특수를 사용 스몰 토크에서 임베디드 클래스 라 - 다이나믹 디스패치)에 액세스 할 수 있습니다. 일부 라이브러리 (예 : MooTools)는 해시지도 관련 구조를 제공합니다.

+0

+1 포인터. :) – Legend

+0

이 예제에서 place1에 액세스하려면 'o.name1.place1'을 사용하여 참조하겠습니까? 그게 너 한테 줄거야? 'place1' 또는'data1'의 값은 무엇입니까? – someone2088

0

이 질문 이후 6 년 동안 상황이 변경되었습니다. 유용 때때로입니다

>> var names = new Array(); 
undefined 

>> names["first"] = "Dotan"; 
"Dotan" 

>> names["last"] = "Cohen"; 
"Cohen" 

>> for (key in names) { console.log(key+" "+names[key]) } 
undefined 
first Dotan 
last Cohen 

, 그리고 모든 브라우저 2012 지원 그 이후에 릴리스하지만 는주의 사항이 있습니다 : 인해 연관 배열을 입력 약한

자바 스크립트에
을 위조 할 수 있습니다! 배열 은 단순히 다시 읽을 수 없습니다

>> names 
Array [ ] 

이 더 중요한, 배열의 길이 쉽게 검색 할 수 없습니다 :

>> names.length 
0 

따라서이 점에서 연관 배열이 아닌 자바 스크립트 것 그것이 의도 된대로 지원되었지만 실제 JS 개체가 필요한 것을 지원하지 않는 경우 어떤 경우에 유용 할 수있는 해결 방법이 있습니다.

>> var names = {}; 
undefined 

>> names.first = "Dotan"; 
"Dotan" 

>> names.last = "Cohen"; 
"Cohen" 

>> for (key in names) { console.log(key+" "+names[key]) } 
undefined 
first Dotan 
last Cohen 

>> names 
Object { first: "Dotan", last: "Cohen" } 

>> Object.keys(names).length 
2