let names = ["Michael", "Bab", "Andrea"];
let num = [4, 5, 6, 9, 8, 7, 1, 2, 3, 0, 11, 12, 13, 10];
let values = [true, false, {}, [], 1, "a"];
// [ 'Andrea', 'Bab', 'Michael' ]
// [ [], 1, {}, 'a', false, true ]
// [0, 1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(names.sort());
console.log(values.sort());
console.log(num.sort());

문자열은 알바벳 순으로 정렬됩니다.

 

배열, 숫자, 객체, 문자열, false, true 순으로 정렬이 됩니다.

 

숫자는 문자열의 유니코드 코드 포인트를 따르기 때문에

1 11 12 2 3 4 순서로 정렬됩니다. 

숫자 순서로 정렬하기 위해서는 sort() 안에 비교 함수를 넣습니다

console.log(num.sort((a, b) => a - b));

/*
오름차순
[
   0,  1, 2, 3,  4,  5,
   6,  7, 8, 9, 10, 11,
  12, 13
]
*/

console.log(num.sort((a, b) => b - a));

/*
내림차순
[
  13, 12, 11, 10, 9, 8,
   7,  6,  5,  4, 3, 2,
   1,  0
]
*/

Map을 이용한 정렬

let list = [
  'korea',
  'Ukraine',
  'Russia',
  'japan',
  'china',
  'America',
  'poland',
  'Rumania',
];

// 임시 배열은 위치 및 정렬 값이있는 객체를 보유합니다.
let mapped = list.map(function (element, index) {
  return { index: index, value: element.toLowerCase() };
});
console.log(mapped);
// 축소 치를 포함한 매핑 된 배열의 소트
mapped.sort(function (a, b) {
  return +(a.value > b.value) || +(a.value === b.value) - 1;
});
console.log(mapped);
// 결과 순서를 위한 컨테이너
let result = mapped.map(function (element) {
  return list[element.index];
});
console.log(result);​
/*
let mapped = list.map(function (element, index) {
  return { index: index, value: element.toLowerCase() };
});
[
  { index: 0, value: 'korea' },
  { index: 1, value: 'ukraine' },
  { index: 2, value: 'russia' },
  { index: 3, value: 'japan' },
  { index: 4, value: 'china' },
  { index: 5, value: 'america' },
  { index: 6, value: 'poland' },
  { index: 7, value: 'rumania' }
]
mapped.sort(function (a, b) {
  return +(a.value > b.value) || +(a.value === b.value) - 1;
});
[
  { index: 5, value: 'america' },
  { index: 4, value: 'china' },
  { index: 3, value: 'japan' },
  { index: 0, value: 'korea' },
  { index: 6, value: 'poland' },
  { index: 7, value: 'rumania' },
  { index: 2, value: 'russia' },
  { index: 1, value: 'ukraine' }
]
let result = mapped.map(function (element) {
  return list[element.index];
});
[
  'America', 'china',
  'japan',   'korea',
  'poland',  'Rumania',
  'Russia',  'Ukraine'
]
*/

[참조]

Array.prototype.sort()

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

+ Recent posts