버블정렬
// 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>

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)

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)

유사배열을 배열로 바꿔서 정렬하는 법
<!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>