2014-12-22 8 views
0

어소시에이션 배열에 값을 저장하는 가장 좋은 방법은 무엇입니까? 나는 많은 것을 시도했고 그것은 항상 어떻게 든 브레이크를 걸립니다. 이 작품과 내가 멋진 배열을 얻을자바 스크립트 assoziativ 배열 :/

var test = []; 

for(var prop in json) { 
    test[prop] = json[key];  
} 

후 실제로 사용할 수 있습니다

내가 좋아하는 뭔가를 시도했다. 하지만 test.length를 호출하면 10 개 항목이 있어야 할 때 3이 나오는데 적어도 8 개 항목이 있어야 할 때 0을 제공하기도합니다.

내가 뭘 잘못 했니? 자바에서 제대로 사용할 수있는 배열을 얻기 위해 여기에가는 가장 좋은 방법은 무엇입니까?

+0

개체를 사용할 수 있습니까? '{key : value} ' – brbcoding

+2

변경 var test = []; var test = {}; –

+3

자바 스크립트에 연관 배열이 없습니다. –

답변

3

모든 것이 JavaScript의 개체입니다. foo [ 'bar']는 foo.bar와 같습니다. Array는 PHP에서 숫자 배열을 호출하거나 거의 모든 다른 언어로 배열을 모방 할 수 있도록 미리 정의 된 일부 메서드가있는 객체입니다. JavaScript 객체는 PHP에서 연관 배열처럼 작동합니다. 일반적인 비 PHP 이름은 해시입니다.

길이 문제를 해결하기 위해 배열 객체의 미리 정의 된 속성입니다. 배열이 아닌 객체에서이 객체를 사용하면 원하는 결과를 얻을 수 없습니다. 객체의 속성 수를 계산하려면 최신 브라우저에서

Object.keys(obj).length 

을 사용할 수 있습니다. keys() 함수는 해시에서 키 배열을 가져 오므로 올바른 길이 속성을 갖습니다.

이전 브라우저를 지원하려면 개체 속성을 반복하고 수동으로 계산해야합니다. for (var prop in json)도 프로토 타입 체인의 모든 객체의 속성을 반복하므로, hasOwnProperty() 메서드를 사용하여 속성이 객체의 속성인지 확인해야 할 수 있습니다.