2010-12-20 3 views
8

제가JavaScript의 '연관'배열의 첫 번째 키는 어떻게 액세스합니까? 문자열

array['serial_number'] = 'value' 

SERIAL_NUMBER 값과 더불어, JS '결합'배열을 갖는다. 예 : array['20910930923'] = '20101102'

값별로 정렬하여 잘 작동합니다. '정렬 된'객체를 다시 가져옵니다.

이제 '정렬 된'배열의 첫 번째 KEY에 액세스하려고합니다. 어떻게 할 수 있습니까? 그냥 JS가 연관을 지원하지 않는 것을 알고, 명확하게 : 나는

감사

편집 ... 내가

for (var i in sorted) 

그냥 THER 첫 번째 후 중지와 반복을 필요로 생각할 수 없다 배열 (그 이유는 내가 제목에 높은 쉼표로 넣어).

+1

http://stackoverflow.com/questions/909003/javascript-getting-the-first-index-of-an-object – Anders

+0

어떻게 배열을 정렬된다? – Emmett

+0

Emmett : 이렇게하면 : http://www.jamesrutherford.com/blog/2010/08/07/javascript-associative-array-sort/ – faboolous

답변

1

사실 JavaScript는 연관 배열을 지원하지 않으므로 묵시적인 순서로 반복 처리 할 수 ​​없습니다 (예 : array[0]이 개체의 첫 번째 요소에 액세스하지 못하는 인덱서 속성을 통해 액세스 할 수 없음). 문법은 마치 실제로 보이는 것처럼 보이지만 실제로는 그렇지 않습니다. 그래서 당신은 당신의 물건에 대한 "주문"이 없습니다.

http://www.hunlock.com/blogs/Mastering_Javascript_Arrays

자바 스크립트가 아닌 지원 연관 배열을 수행하지 않습니다. 그러나 ... 자바의 모든 배열은 이고 자바 스크립트의 객체 구문은 연관의 기본 에뮬레이션 인 배열을 제공합니다. 이러한 이유로 위의 예제 코드가 실제로 작동합니다. 은 실제 배열이 이 아니며, 을 사용하면 실제 함정이 있다고 경고했습니다. 예제의 'person'요소는 개체의 속성 및 메서드의 일부가되며 .length, .sort(), .splice() 및 다른 모든 기본 제공 속성과 메서드와 같은 입니다.

+1

어, 개체가 연관 배열입니까? – falstro

+3

JavaScript에는 연관 배열이 없습니다. 모두 큰 괴물입니다. – Anders

+1

@Anders; 감자 potahto, 거기에 개체가 없습니다, 그들은 모두 큰 괴물 연관 배열이야. – falstro

4

JavaScript 개체 속성은 순서가 지정되지 않은 much though many people wish it were different입니다. 당신이 순서를해야 할 경우, 객체를 사용하고 대신 Array을 사용하려는 모든 시도를 포기하거나 이름 값 오브젝트 저장 :

var nameValues = [ 
    {name: '20910930923', value: '20101102'}, 
    {name: 'foo', value: 'bar'} 
]; 

... 또는 속성 이름의 순서 목록으로 기존의 객체에 사용할를 :

var obj = { 
    '20910930923': '20101102', 
    'foo': 'bar' 
}; 

var orderedPropertyNames = ['20910930923', 'foo']; 
0

그냥 내 머리 위로 떨어져 생각,하지만 당신은 키 값 쌍을 가진 다른 배열을 교환 할 수?

그래서 대답은 arrayKeyValueReversed [ '20101102'] = '20910930923'입니다.

배열을 정렬 할 때 첫 번째 항목 (array [0])을 키로 사용하여 arrayKeyValueReversed에 값을 가져옵니다.

2

이 시도 :

// Some assoc list 
var offers = {'x':{..some object...}, 'jjj':{...some other object ...}}; 

// First element (see attribution below) 
return offers[Object.keys(offers)[0]]; 

// Last element (thanks to discussion on finding last element in associative array :) 
return offers[Object.keys(offers)[Object.keys(offers).length - 1]]; 
관련 문제