2013-06-10 4 views
0

자바 스크립트에서 알파벳순으로 해시 테이블 (원래 "resultVal")을 정렬하려고합니다.자바 스크립트에서 알파벳순으로 해시 테이블 정렬

// initializing an array with all the keys. // 
var keys = []; 
// populating it with all the keys in the hashtable. // 
for (var key in resultVal) { 
    if (resultVal.hasOwnProperty(key)) { 
     keys.push(key); 
    } 
} 
// Alphabetically sorting the array populated with hash table keys. // 
keys.sort(); 
var temp = {}; 

for (var i = 0; i < keys.length; i++) { 
    var key = keys[i]; 
    var value = resultVal[key]; 
    if (key != "") { 
     temp[key].push(value); 
    } 
} 

내 문제는 마지막 문이다 - 나는 알파벳 키를 정렬하고 임시 해시 테이블에 키와 각각의 값을 다시 공급되는 뭐하는 거지

temp[key].push(value); 

... "임시 직원".

push 문을 인식하지 못합니다. 누구든지 도와 줄 수 있습니까?

+1

개체 속성이 정렬되지 않았으므로이 모든 작업을 수행 할 필요가 없습니다. 어떤 점에서 정렬 된 값을 액세스해야하는 경우 나중에 키를 추출하고 정렬하십시오. –

답변

2

temp은 배열이 아니라 객체로 정의됩니다. push()을 입력 할 필요가 없습니다.

temp[key] = value; 
+0

고마워, 일 했어! 배열과는 반대로 객체 안으로 밀어 넣을 필요가없는 이유를 설명 할 수 있습니까? 왜냐하면 내가 해시 테이블을 만들 때 두 개의 개별 배열을 병합하고 푸시 기능을 사용했기 때문입니다. noobish = ness에 대해 사과드립니다. – Philo

+0

'temp [key]'에 저장된 값은 배열이 아닙니다. 배열에 밀어 넣으려는 경우 임시 배열의 해당 위치에 배열 객체를 정의해야합니다. – nderscore

+2

또한 JS의 속성이 JS 엔진/브라우저 및 이름에 따라 다른 위치를 가질 수 있다는 사실을 알고 있어야합니다. 따라서 소품의 특정 위치가 필요한 경우 항상 배열을 사용하십시오. –