버블정렬

// sort를 알려면 정렬 -> 최대값, 최소값
    let testArr2 = [3,6,1,2,9,7,3,2];

    //버블 정렬(정렬중에 제일 쉬움)
    for(j=0; j<testArr2.length; j++) {
        for(let i=j+1; i<testArr2.length; i++) {
            if(testArr2[j] > testArr2[i]) { 
                let temp = testArr2[j];
                testArr2[j] = testArr2[i];
                testArr2[i] = temp;
            };
        }
    }
    alert("체크 : " + testArr2)

sort 메소드 (숫자)

// 배열 객체에 sort 메소드가 제공되고 있음!
    const testArr1 = [1,5,2,4,3,7,8];

    alert("체크:" + testArr1.sort()); // 디폴트로 오름차순
    alert("체크2: " + testArr1.sort(function(a,b){ // 내림차순
        return b - a;
  }))
<!DOCTYPE html>
<meta charset="UTF-8">
<script>

    // 배열 클래스
    function MyArray(){
        this.length = 0;
    }

    // push 메소드
    MyArray.prototype.push = function(pElem){
        this[this.length] = pElem;
        this.length++;
        return this; // 메소드 체이닝
    }

    // sort메소드
    MyArray.prototype.sort = function(pCallback){
        for(j=0; j<this.length; j++) {
            for(let i = j + 1; i < this.length; i++) {
                if(pCallback(this[j],this[i]) > 0) {   // 조건 만족이 안되어서 
                    let temp = this[j];
                    this[j] = this[i];
                    this[i] = temp;
                };
            }
        }
    }

    let testMerong = new MyArray();
    testMerong.push(2).push(6).push(3).push(1).push(4);
    testMerong.sort(function(a,b){
        return a - b;
    })
    console.log("체크 : ", testMerong);

    testMerong.sort(function(a,b){
        return b - a;
    })
    console.log("체크 : ", testMerong);

    
    // 배열 객체에 sort 메소드가 제공되고 있음!
    const testArr1 = ["오대환","김동혁","김민욱","진현성","정재균"];
    
    alert("체크:" + testArr1.sort()); // 디폴트로 오름차순
    alert("체크2: " + testArr1.sort(function(a,b){ // 내림차순
        // return b - a;
        if(b > a) return 1;
        if(b == a) return 0;
        if(b < a) return -1;

    }))

    // sort를 알려면 정렬 -> 최대값, 최소값
/*     let testArr2 = [3,6,1,2,9,7,3,2];

    //버블 정렬(정렬중에 제일 쉬움)
    for(j=0; j<testArr2.length; j++) {
        for(let i=j+1; i<testArr2.length; i++) {
            if(testArr2[j] > testArr2[i]) { 
                let temp = testArr2[j];
                testArr2[j] = testArr2[i];
                testArr2[i] = temp;
            };
        }
    }
    alert("체크 : " + testArr2) */

   // let max = testArr[0]; // 첫번째 값이 제일 크다고 가정!

</script>

Untitled

json 객체에서 나이순으로 정렬하기

const blackPink = [
        {name:"로제", age:26, song:"흥"},
        {name:"제니", age:27, song:"치"},
        {name:"리사", age:26, song:"뿡"},
        {name:"지수", age:28, song:"크"},
        {name:"지혜", age:25, song:"헉"},
    ]

    blackPink.sort(function(a,b){
        return a.age - b.age;
    });
    
    console.log("체크: ", blackPink)

Untitled

Json 객체에서 이름순으로 내림차순 정렬하기

const blackPink = [
        {name:"로제", age:26, song:"흥"},
        {name:"제니", age:27, song:"치"},
        {name:"리사", age:26, song:"뿡"},
        {name:"지수", age:28, song:"크"},
        {name:"지혜", age:25, song:"헉"},
    ]

    blackPink.sort(function(a,b){
        //return a.age - b.age; // 숫자일때만 가능'
        if(a.name > b.name) return 1;
        if(a.name == b.name) return 0;
        if(a.name < b.name) return -1;
    });

    console.log("체크: ", blackPink)

Untitled

유사배열을 배열로 바꿔서 정렬하는 법

<!DOCTYPE html>
<meta charset="UTF-8">
    <table border="1">
        <tbody id="sujin">
            <tr>
                <th>이름</th>
                <th onclick="ftest()">나이</th>
                <th>별명</th>
            </tr>
            <tr>
                <td>김민정</td>
                <td>20</td>
                <td>정민</td>
            </tr>
            <tr>
                <td>박승우</td>
                <td>40</td>
                <td>우승</td>
            </tr>
            <tr>
                <td>정은지</td>
                <td>30</td>
                <td>지은</td>
            </tr>
        </tbody>
    </table>
<script>
    // 유사배열을 배열로 변환
    function toArray(pArg){
        var arr = [];
        for(let i=1; i<pArg.length; i++){
            arr.push(pArg[i]);
        }
        return arr;
    } 

    // Array.from( 유사배열을 자스배열로 바꾸어줌, 원리는 위 toArray함수)
    // 유사배열을 진짜 배열로 바꿔주는 역할을 함
    // const trs = Array.from(document.querySelectorAll("tr"));
    let trs = toArray(document.querySelectorAll("tr"));
    const ttbody = document.querySelector("tbody");

    // 이미 존재하는 객체를 appendChild하면 이동해 버림!
		// 잘 안쓰게 되면 동적 바인딩을 너무 많이 써야 해서, 이벤트 처리가 힘들어짐
    ttbody.appendChild(trs[1]); // tbody에 넣는걸 눈으로 확인!
    
/*   let arr2 = toArray(trs);
    console.log(arr2.sort()); */

    function ftest(){
        trs.sort(function(a,b){
            return a.children[1].innerHTML - b.children[1].innerHTML
        })

        for(let i=0; i<trs.length; i++){
            ttbody.appendChild(trs[i]); // tbody에 넣기
        }
    }
</script>