array.ptororype.join(); > Array.prototype.toString(); | 원본 유지 | 결과 string 반환 |
join(separator?: string): string;
join은 array로 새로운 string을 생성, 반환해준다.
seperator:
생략 | ,로 구분해서 출력 |
"string입력" ", " " and " |
해당 값으로 구분자 적용 |
'' or "" | 붙여서 출력 |
여기서 array란, index값이 0부터 시작해서 순차적으로 올라가는 일반적인 array를 말하며, index값에 다른 값(string등)이 추가된 경우 array-like object로 분류되어, join.call을 사용한다.(참고
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join )
const a = ["Wind", "Water", "Fire"];
a.join(); // 'Wind,Water,Fire'
a.join(", "); // 'Wind, Water, Fire'
a.join(" + "); // 'Wind + Water + Fire'
a.join(""); // 'WindWaterFire'
array.prototype.map(); | 원본 유지 | 결과 array 반환 |
콜백 함수의 result를 array로 묶어서 반환해준다.
const result = students.map(function(a){
return a.score
});
이걸 람다식으로 변경하면
const result = students.map((a) => a.score);
Array.from(arr); | 원본 유지 | 결과 array 반환 |
참고만.
아래와 같이 array.prototype.map()과 동일한 역할을 한다.
형식은 조금 다르다.
const arr = [0, 1, 2];
const usingFrom = Array.from(arr, (item)=> item + 1);
const usingMap = arr.map((item) => item + 1);
console.log(usingFrom); // [1, 2, 3];
console.log(usingMap); // [1, 2, 3];
그런데 from은 array가 아닌걸 array로 바꿔줄 수 있다.
const obj = {'0':'apple', '1':'banana', '2':'carrot', length: 3}; // array-like
const objArr = Array.from(obj);
console.log(objArr); // ["apple", "banana", "carrot"]
const str = "abcde"; // iterable
const strArr = Array.from(str);
console.log(strArr); // ["a", "b", "c", "d", "e"];
하지만 퍼포먼스가 많이 느려서, 일반적인 용도에서는 map만 사용한다.
array.prototype.slice(); | 원본 유지 | 결과 array로 반환 |
slice(start?: number, end?: number): T[];
slice(); 로 배열 깊은 복사 가능함.(참조만 복사X, 값 모두 복사)
start :
생략 | 0으로 간주 |
array.length <= start | 반환하지 않음 |
0 <= start |
해당 위치부터 시작함. |
음수일 경우 |
뒤에서부터 카운트함. |
end :
생략 or 배열길이보다 클 경우 |
끝까지 반환 |
end>start | start포함, end직전 값(포함안됨)까지 반환 |
end <= start |
아무것도 반환하지 않음 |
음수일 경우 | 뒤에서부터 카운트 |
item1, item2, itemN : 해당 아이템을 그 자리에 넣어줌.
return : 지워진 값이 array로 반환됨. (1개든, 0개든 무조건 array로 반환됨)
array.prototype.reverse(); | 원본 변경 | 결과 array로 반환 |
원본 유지가 필요하면 slice();로 새로운 배열을 생성후 사용할 것.
reverse(): T[];
array의 순서를 반전시키며, 반전된 값을 반환.
array.prototype.sort(); | 원본 변경 | 하나의 결과값 반환 |
주어진 함수에서 결과값이 음수가 나오면 첫번째가 두번째보다 작다고 가정하고 정렬함.
기본적
var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
return a - b;
});
console.log(numbers);
//아래처럼 람다식으로 단순화 가능함.
var numbers2 = [4, 2, 5, 1, 3];
numbers2.sort((a, b) => a - b);
console.log(numbers2);
가장 기본적인 정렬은 위와 같이 a-b형식으로 하면 된다.
반대로 내림차 정렬의 경우 b-a로 처리.
이름 알파벳 순으로 정렬하기 위해선 아래와 같이 풀어써야 한다.
ASCII문자가 아닌 경우, String.localeCompare()를 사용한다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare
var items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic', value: 13 },
{ name: 'Zeros', value: 37 }
];
// name 기준으로 정렬
items.sort(function(a, b) {
var nameA = a.name.toUpperCase();
// ignore upper and lowercase
var nameB = b.name.toUpperCase();
// ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
// 이름이 같을 경우
return 0;
});