[JavaScript] 정렬함수 sort()

|

sort()

출처 : 더디미의 개발로그

문자 정렬

var fruit = ['orange', 'apple', 'banana'];

/* 일반적인 방법 */
fruit.sort(); // apple, banana, orange

숫자 정렬

var score = [4, 11, 2, 10, 3, 1]; 

/* 오류 */
score.sort(); // 1, 10, 11, 2, 3, 4 
              // ASCII 문자 순서로 정렬되어 숫자의 크기대로 나오지 않음

/* 정상 동작 */
score.sort(function(a, b) { // 오름차순
    return a - b;
    // 1, 2, 3, 4, 10, 11
});

score.sort(function(a, b) { // 내림차순
    return b - a;
    // 11, 10, 4, 3, 2, 1
});

Object 정렬

var student = [
    { name : "재석", age : 21},
    { name : "광희", age : 25},
    { name : "형돈", age : 13},
    { name : "명수", age : 44}
]

/* 이름순으로 정렬 */
student.sort(function(a, b) { // 오름차순
    return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
    // 광희, 명수, 재석, 형돈
});

student.sort(function(a, b) { // 내림차순
    return a.name > b.name ? -1 : a.name < b.name ? 1 : 0;
    // 형돈, 재석, 명수, 광희
});

/* 나이순으로 정렬 */
var sortingField = "age";

student.sort(function(a, b) { // 오름차순
    return a[sortingField] - b[sortingField];
    // 13, 21, 25, 44
});

student.sort(function(a, b) { // 내림차순
    return b[sortingField] - a[sortingField];
    // 44, 25, 21, 13
});

ps. 정렬할 Array의 요소의 개수가 2개 미만일 경우 ‘sort is not a function’ 오류가 난다. [2015-11-30 추가]

[Algorithm] 백준 7287 등록 -JavaScript

|

문제

자신이 온라인 저지에서 맞은 문제의 개수와 아이디를 그대로 출력하는 프로그램을 작성하시오.

입력

이 문제는 입력이 없다.

출력

첫 줄에 자신이 맞은 문제의 수, 둘째 줄에 아이디를 출력한다.

예제 입력 1 복사


예제 출력 1 복사

123
Your_ICPC_Team_Name

풀이

문제 이해를 잘 못했었다 구글링을통해 문제 뜻을 찾아보았다.

내가 맞춘문제의 갯수와 내 아이디를 넣으라는 말이었다.

백준사이트에서 내아이디를 클릭해보면 몇문제 맞혔는지 나온다 그것을 적어주면된다.

줄 바꾸기 \n도 잊지말자

console.log('4\necactor')

[Algorithm] 백준 10172 개-JavaScript

|

문제

아래 예제와 같이 개를 출력하시오.

입력

없음.

출력

개를 출력한다.

예제 입력 1 복사


예제 출력 1 복사

|\_/|
|q p|   /}
( 0 )"""\
|"^"`    |
||_/=\\__|

풀이

console.log (
'|\\_/|\n' +     // 백슬러시 두번으로 백슬러시를문자로 만들수있다.
'|q p|   /}\n' +
'( 0 )"""\\\n' +
'|"^"`    |\n' +
'||_/=\\\\__|'
)

고양이문제와 동일하게 백슬러시를 문자열로 나타내고 싶을때는 백슬러시를 두번넣어주면된다.

[Algorithm] 백준 10171 고양이 -JavaScript

|

문제

아래 예제와 같이 고양이를 출력하시오.

입력

없음.

출력

고양이를 출력한다.

예제 입력 1 복사


예제 출력 1 복사

\    /\
 )  ( ')
(  /  )
 \(__)|

풀이

console.log(

    "\\    /\\\n" +
    " )  ( ')\n" +
    "(  /  )\n" +
    " \\(__)|"
)

JS에서 백슬러시를 문자열로 넣고 싶을떄는 백슬러시를 두번 넣어야한다.

줄바꿈을 하고 싶을때는 \n 하면된다.

[JavaScript] 객체지향 프로그래밍 기본 용어

|

객체 지향 프로그래밍

하나의 모델이 되는 청사진(blueprint)를 만들고,

그 청사진을 바탕으로 한 객체(object)를 만드는 프로그래밍 패턴

예제

function Car(brand, name, color) {  // Car -> class
    this.brand = brand;  // this -> avante
    this.name = name;
    this.color = color;
} 

Car.prototype.drive = function() {
    console.log(this.name + ' 가 운전을 시작합니다');
}

let avante = new Car('hyundai', 'avante', 'black');  // avante -> instance
avante.color; // 'black'
avante.drive(); // 'avante 가 운전을 시작합니다'

알아야할 용어

  1. Class

    위의 예제에서 Class는 Car 이다

  2. instance (new 키워드)

   let avante = new Car('hyundai', 'avante', 'black');
   let mini = new Car('bmw', 'mini', 'cyan');
   
   // new키워드를 써서 instance를 만들어낸다
  1. this

    new키워드로 instance를 만들어냈을때 해당 instance가 바로 this 가 된다.

    위의 예제에서 this -> avante이다.

  2. prototype

    모델의 청사진을 만들때 쓰는 원형 객체 이다.

    Car.prototype.drive = function() {
        console.log(this.name + ' 가 운전을 시작합니다');
    }
       
    Car.prototype.refuel = function() {
        console.log(this.name + ' 가 연료를 충전합니다')  
    }
       
    Car.prototype.여기에원하는걸써 = function() {
        //실행하고 싶은것을 만들면됨
    }
    
  3. **constructor(생성자) **

    // 위의 예제에서 
       
    {  
        this.brand = brand;  
        this.name = name;
        this.color = color;
    } 
       
    // 이부분이 constructor 이다.