2011-08-20 7 views
1

변수가 5 개 있습니다 (a, b, c, de). 값은 사용자 입력에 따라 다릅니다. 이제는 내림차순으로 값에 따라이 변수를 정렬 한 다음 인쇄하려고합니다.변수를 값에 따라 정렬 한 다음 인쇄하십시오.

a = 1, b = 1.5, c = 1, d = 3, e = 2 

내가 이런 식으로 목록을 인쇄 할 : 예를 들어, 나는 다음과 같은 값이 나는이 사용하는 연관 배열을 달성하기 위해 노력했다

d = 3 
e = 2 
b = 1.5 
a = 1 
c = 1 

을하지만 색인이 아니에요 이후에 실패했습니다. 이 문제를 해결할 수 있도록 도와 주시겠습니까?

답변

2

음,

var vars = {a: 1, b: 1.5, c: 1, d: 3, e: 2}, keys = Object.keys(vars); 
keys.sort(function (a, b) { 
    return vars[b] - vars[a]; 
}); 
keys.forEach(function (key) { 
    console.log(key + ' = ' + vars[key]); 
}); 

같은 멋지게 트릭을 할 것으로 보인다. 이 일부 브라우저에서 지원되지 않습니다 ES5 Object.keys를 사용합니다, 그래서 당신이 오페라와 IE < 9에서 실행하려는 경우, 당신은

if (typeof Object.keys !== 'function') { 
    Object.keys = function (obj) { 
     var keys = [], i; 
     for (i in obj) { 
      if (obj.hasOwnProperty(i)) { 
       keys.push(i); 
      } 
     } 
     return keys; 
    }; 
} 

오처럼 뭔가를해야하고 있습니다 또한 ES5 대해 forEach를 사용하기 때문에 당신이 IE < 9 작업을해야하는 경우는 아주 잘 작동

if (typeof Array.prototype.forEach !== 'function') { 
    Array.prototype.forEach = function (func) { 
     for (var i = 0, l = this.length; i < l; i += 1) { 
      func(this[i], i); 
     } 
    }; 
} 
+0

, 당신은 같은 것을해야 할 것이다. 고마워요 :) –

+0

@ Eng.Fouad : 문제 없습니다. :) –

0

사용 : arr = [ [ "a", 1 ], [ "b", 1.5 ], ... ]sort 각 값의 두 번째 항목 만 사용하는 사용자 지정 정렬 기능이있는 배열.

관련 문제