JavaScript는 Array 객체에 sort() method를 제공한다.
그냥 호출하면 문자열 정렬을 하는 듯.

<script>
var arr = new Array(52.53691.140.987.31);
arr.sort();
document.write(arr);

// 결과는 아래와 같음
// 0.98,1.14,369,52.5,7.31
</script>




이 sort() 함수를 오버라이딩해서 custom sort가 가능하다.

<script>
// 견본배열
var arr = new Array(52.53691.140.98, 7.31);
// 일단 한 번 출력해보면 배열 그대로 출력이 된다.
document.write(arr+'<br />');

// custom sort
// 문자열, 정수, 실수의 비교를 하려면 미리 타입캐스팅을 해두고 비교하면 된다.
// return 에 있는 부등호의 방향을 뒤집으면 역정렬.
arr.sort(function (a1, a2) {
    // 문자열 비교 (toLowerCase()는 대소문자 구분없이 하기 위함)
    a1 = a1.toString().toLowerCase();
    a2 = a2.toString().toLowerCase();
    // 정수
    //a1 = parseInt(a1);
    //a2 = parseInt(a2);
    // 실수
    //a1 = parseFloat(a1);
    //a2 = parseFloat(a2);

    return (a1<a2) ? -1 : ((a1>a2) ? 1 : 0);
});

// 원하는대로 정렬이 되었음을 확인가능하다.
document.write(arr);
</script>





마지막으로 다차원 배열의 정렬.

<script>
// 이름, 나이 배열을 item으로 가지는 다차원 배열 정의
var arr2 = new Array();
arr2[0] = new Array('백충덕',   31);
arr2[1] = new Array('bloodguy'20);
arr2[2] = new Array('nicehide'19);
arr2[3] = new Array('racoonx',  48);
arr2[4] = new Array('mindriot'23);

// 그냥 출력해봄
document.write(arr2);
document.write('<br />');

// iIdx로 인덱스 번호를 지정하여, 
// 이름, 나이별로 정렬이 가능함.
arr2.sort(function (a1, a2) {
    var idx = 0// 이름
    //var idx = 1; // 나이

    switch (idx) {
        case 0// 이름 - 문자열 정렬 (사실 기본이라 아무것도 안해도 됨)
            a1[idx] = a1[idx].toString().toLowerCase();
            a2[idx] = a2[idx].toString().toLowerCase();
            break;
        case 1// 나이 - 정수변환
            a1[idx] = parseInt(a1[idx]);
            a2[idx] = parseInt(a2[idx]);
            break;
    }

    return (a1[idx]<a2[idx]) ? -1 : ((a1[idx]>a2[idx]) ? 1 : 0);
});
document.write(arr2);
</script>

http://bloodguy.tistory.com/trackback/619

'js' 카테고리의 다른 글

자바스크립트 this에 대해 알아보자  (0) 2014.12.06
클로져(Closures)  (0) 2014.11.03
함수(function) 다시 보기  (0) 2014.11.03
JSTL core : <c:forEach> 사용법과 varStatus 상태값  (0) 2014.10.19
Posted by 조신부리
,

JSTL 문법의 for문 사용법

<c:forEach items="${리스트가 받아올 배열이름}" var=$"{for문안에서 사용할 변수}" varStatus="status">

status 는 for문의 돌아가는 상태를 알 수 있게 체크하여 준다

#{status.current}   현재의 for문에 해당하는 번호

#{status.index} 0부터의 순서

#{status.count} 1부터의 순서

#{status.first}  현재 루프가 처음인지 확인

#{status.last}  현재 루프가 마지막인지 확인

#{status.begin} for문의 시작 값

#{status.end}   for문의 끝 값

#{status.step}  for문의 증가값

'js' 카테고리의 다른 글

자바스크립트 this에 대해 알아보자  (0) 2014.12.06
클로져(Closures)  (0) 2014.11.03
함수(function) 다시 보기  (0) 2014.11.03
다차원 배열 정렬 (multiple array sort)  (0) 2014.10.30
Posted by 조신부리
,

이전에는 부시 대통령의 연설을 살펴보았는데, 이번에는 미국에서 존경 받는 대통령중 하나인 케네디를 한번 살펴보자. 아래는 케네디의 취임 연설문 중 일부이다.

 

We observe today not a victory of party but a celebration of freedom - symbolizing an end as well as a beginning - signifying renewal as well as change.

우리는 오늘 당파의 승리를 축하하는 것이 아니라 자유를 - 개막과 아울러 폐막을 상징하고 변화와 더불어 쇄신을 의미하는 자유를 - 축하합니다.

 

My fellow Americans, ask not what your country can do for you; ask what you can do for your country.

친애하는 국민 여러분, 국가가 국민 여러분을 위하여 무엇을 할 수 있는가를 묻지 말고, 국민 여러분이 국가를 위하여 무엇을 할 수 있는가를 묻기 바랍니다.

 

 

이는 링컨의 게티스버그 연설의 "Government of the people, by the people, for the people" 만큼이나 유명하고 친숙한 문구이다. 어떻게 보면 굉장히 오만하게 들리기도 하는 말임에도 불구하고 긍정적으로 받아들여지는 이유는 무엇일까?

 

 

Let us never negotiate out of fear. But let us never fear to negotiate.

두려워서 협상해서도 안 되며 협상을 두려워해서도 안 된다.

 

Mankind must put an end to war, or war will put an end to mankind.

인류가 전쟁에 종지부를 찍지 않으면 전쟁이 인류에 종지부를 찍을 것이다.

 

No one has been barred on account of his race from fighting or dying for America. There are no "white" or "colored" signs on the foxholes or graveyards of battle.

누구든 인종을 불문하고 미국을 위하여 싸우고 죽는 것이 절대적으로 보장되어왔습니다. 전쟁터의 참호나 전몰장병묘지에는 백인 전용도 없고 유색인종 전용도 없습니다.

 

케네디의 취임은 1961년으로 우리나라의 4.19혁명(1960년)과 같은 년도에 당선된 미국 대통령이다. 군부와 정 반대에 서 있던 그는 우리나라의 초기 대통령들과는 반대의 입장에 선 것처럼 보인다. 다만, 내가 미국사에 대한 지식이나 근현대사에 대한 지식이 부족해 더이상의 언급은 무리처럼 보이고, 다음은 시인 로버트 프로스트의 추모연설을 보도록 하자.

 

When power leads man toward arrogance, poetry reminds him of his limitations. When power narrows the areas of man’s concern, poetry reminds him of the richness and diversity of his existence. When power corrupts, poetry cleanses.

권력이 인간을 오만으로 몰고 갈 때 詩는 인간의 한계를 일깨워줍니다. 권 력이 인간의 관심 영역을 좁힐 때 詩는 인간 존재의 풍요와 다양성을 일깨 워줍니다. 권력이 부패할 때 詩는 정화해줍니다.

 

For art establishes the basic human truths which must serve as the touchstones of our judgment. The artist, however faithful to his personal vision of reality, becomes the last champion of the individual mind and sensibility against an intrusive society and an officious state.

예술은 우리 판단의 시금석이 되는 기본적인 인간 진실들을 확립합니다. 예술가가 현실에 대한 자신의 비전을 충실히 따른다 해도, 결국 그는 사회의 침입과 국가의 개입에 맞서 개인적 정신과 감성을 옹호하는 마지막 보루가 됩니다.


The great artist is thus a solitary figure. He has, as Frost said, “a lover’s quarrel with the world.” In pursuing his perceptions of reality, he must often sail against the currents of his time. This is not a popular role.

따라서 위대한 예술가는 고독한 인물입니다. 프로스트 말대로, 예술가는 「 세상과 사랑 싸움을」 합니다. 예술가가 현실에 대한 자신의 인식을 좇다 보면 시대의 조류를 거스를 수밖에 없습니다. 이것은 인기 있는 역할이 아닙니다.

 

 

로버트 프로스트는 "가지 않은 길"로 친숙한 미국 시인인데, 이 시는 한국에서 가장 애송되는 영미시 중 하나로 꼽히고 있다. 그런 시인에게 보내는 연설문이기 때문일까, 이 연설운 미국 사회에서 예술적 가치를 논한 기념비적 연설로 평가받는다. 어떻게 대통령 '주제에' 이런 글을 썼나 살펴 보면, 놀랍게도 존 케네디는 1956년 쓴 전기로 1957년에 퓰리쳐 상을 수상하기도 하였다.

 

 

 

 

- 참고 : 영어 상식 칼럼 100

 


'영어' 카테고리의 다른 글

링컨- 게티스버그 연설문  (0) 2014.10.12
Posted by 조신부리
,