답변
JavaScript에서는 연관 배열이 실제로 존재하지 않습니다. 그러나 자바 스크립트 객체를 사용하여 유사한 기능을 달성 할 수있다 : 키가 조금 소리 객체를 사용
var a = {
helloText: "Hello World!"
};
var b = {};
b[a] = "Testing";
alert(b[a]); // Returns "Testing" (at least, in Safari 4.0.4)
:
// Create object
var myObject = {
key: value,
helloText: "Hello World!"
};
// Access object in some statement via:
myObject.helloText
// ...or:
myObject["helloText"]
가 키로서 객체를 사용하려면를, 당신은 같이해야 할 것이다 이상한, 그래도. 이 작업을 수행해야합니까?
업데이트 :
당신 은 실제로 자바 스크립트의 키로서 객체를 사용할 수 없습니다. 위의 코드가 작동하는 이유는 문 b[a] = "Testing";
에서 a
을 a.toString()
을 통해 "[object Object]"
이라는 문자열로 변환하고이 문자열을 키로 사용한다는 것입니다. 그래서 우리의 진술은 실제로 b["[object Object]"] = "Testing";
이고 우리의 경고문은 정확히 alert(b["[object Object]"]);
과 같습니다.
CMS에게 감사의 말을 전합니다!
업데이트 2 :
Tim Down 자신의 자바 스크립트 라이브러리 jshashtable
당신이 키로서 객체를 사용할 수 있음을 지적한다.
객체를 키로 사용할 수 없으며 배열 객체에 속성을 설정하기 때문에 배열에서 객체 배열을 사용할 수 없습니다. 즉, .length
으로 루프 할 때 기본적으로 그렇지 않습니다. 설정 한 수동 정의 된 등록 정보를 설명합니다.
개체 리터럴 내부에 배열 및 배열을 모두 저장하는 것이 좋습니다. 예를 들면 : kprime은 당신이 자바 스크립트를 사용하는 경우 .data()
를 사용하는 것이 더 좋을 수도,하지만 그의 대답에 언급
var list = [
{
el:document.body,
arr:[1,2]
}
];
for (var i = 0, l = list.length; i<l; ++i) {
alert(list[i]['el'])
alert(list[i]['arr'][0])
}
// add elements to the array
list.push({
el:document.body.firstChild,
arr:[3,4]
})
으로.
그냥 추측하지만 일부 (임의의) 데이터를 jQuery 객체 (가능하면 요소)와 연결하려는 것 같습니다. 이 경우 data()
방법을 사용하지 않으시겠습니까?
$('#el').data (value);
입니다. jQuery에 대해서도 잊어 버렸습니다. –
글쎄, 질문의 첫 번째 버전에서'key'는 DOM 요소라고 불 렸습니다. 질문은 jquery 태그가 아닙니다. 그것이 우리를 "잘못"하거나 더 귀찮은 트랙으로 만들었습니다. –
:
var idCounter = 0;
var container = { };
function storeValue(element, value) {
if (!element.getAttribute('id')) {
element.setAttribute('id', makeID());
}
var id = element.getAttribute('id');
container[id] = value;
}
function makeID() {
return 'unique-id-' + idCounter++;
}
편집 :이 솔루션은 있다고 가정을 jQuery를 사용할 수 없습니다. 그렇다면 data('key', value)
을 사용하십시오.
모든 자바 스크립트 객체가 연관 배열이며,이 언어의 속성 빌드, 당신은 특별한 아무것도 필요하지 않습니다, 단지 * 그
게시 된 첫 번째 답변에 대한 의견보기. –
- 1. 연관 배열을 재정렬하는 가장 우아한 방법은 무엇입니까?
- 2. 인터프리터에서 배열을 구현하는 방법은 무엇입니까?
- 3. PHP에서 이러한 함수를 구현하는 방법은 무엇입니까?
- 4. 키리스 배열을 연관 배열
- 5. 내가 연관 배열을 가지고
- 6. 다차원 연관 배열을 어떻게 열거합니까?
- 7. jquery tab plugin으로 이러한 탭 레이아웃을 구현하는 방법은 무엇입니까?
- 8. PHP ~ 완전 연관 배열을 테스트하는 방법
- 9. 비 연관 배열을 연관 배열로 변환하는 가장 유용한 방법
- 10. PHP에서 연관 배열을 XML로 변환
- 11. dtrace에서 연관 배열을 어떻게 인쇄합니까?
- 12. 다차원 연관 배열을 통한 반복
- 13. 연관 배열을 객체 배열로 변환
- 14. PHP에서 연관 배열에 배열을 추가하십시오.
- 15. D의 연관 배열을 기반으로 정렬
- 16. 배열을 연관 배열에 값으로 저장
- 17. 이러한 뷰 전환 효과를 구현하는 방법
- 18. 이러한 변수를 정의하는 더 쉬운 방법은 무엇입니까?
- 19. MVVM을 사용하여 이러한 응용 프로그램을 구현하는 방법
- 20. 가변 길이 배열을 구현하는 가장 좋은 방법은 무엇입니까?
- 21. ActionScript 3 - 연관 배열을 사용하여 어커런스 카운트
- 22. 배열을 복사하는 방법은 무엇입니까?
- 23. 이러한 문자열이 일치하는 가장 좋은 방법은 무엇입니까?
- 24. 포함 된 배열을 기반으로 PHP에서 배열을 정렬하는 방법은 무엇입니까?
- 25. PHP는 리터럴 키가있는 연관 배열을 앞에 추가합니까?
- 26. jTemplates에 연관 배열을 매개 변수로 전달
- 27. ASP.Net MVC - Javascript 연관 배열을 컨트롤러에 전송
- 28. 연관 배열을 사용하는 PHP 카운트 함수
- 29. 연관 배열을 반복하고 목록에 출력하는 방법?
- 30. 어떻게 자바 스크립트에서 연관 배열을 제거합니까?
왜 작품? 아주 이상한 – user198729
두 번째 예제처럼 사용 속성 접근 자 (* 괄호 표기법 *)가 내부적으로 속성 표현 (*는 괄호 * 사이에있는)을'String'으로 변환하기 때문에 작동합니다. 예를 들어'b'는''[object Object] ''라는 속성으로 끝납니다 '. 이것은'a'에 적용된'toString' 연산의 결과입니다. 왜냐하면 실제로 더 많은 객체를 추가 할 수 없기 때문입니다 (그들은 단지 그 속성 값을 변경할 것입니다). 'alert (b [ "[object Object]"]);를 시도하면''Testing ''도 표시됩니다. – CMS
임의의 객체를 키로 사용하는 것은 정확히 해시 맵과 연관 배열의 핵심입니다. 그러나 jQuery 객체를 키로 사용하면 가능하지 않더라도 jQuery 객체가 변경 될 수 있으므로 나쁜 생각처럼 들릴 수 있습니다. 열쇠는 DOM 객체의 id와 같이 일정해야합니다. 그리고 그것은 문자열이므로 키로 사용할 수 있습니다. 어쩌면 jquery 선택기를 사용하는 것이 옵션이지만 자바 스크립트 속성 (예 : #,. 및 공백)에서 허용되지 않는 문자를 포함 할 수 있습니다. – mcv