concat메서드는 인수로 전달된 값들을 원본 배열의 마지막 요소로 추가한 새로운 배열을 반환.
자! 저렇게 하면 못 외운다. 읽어라.
" 선생님, 첫 번째 인수부터 시작해서요~ 제가 두 번째 인수만큼 지우려 하는데요. 아,, 안 지울 수도 있어요. 대신에 그 뒤에 것 다 넣어주세요."
slice 메서드는 인수로 전달된 범위의 요소들을 복사해 배열로 반환. 원본 배열은 변경되지 않는다.
- start : 복사를 시작할 인덱스. 음수인 경우 배열의 끝에서 인덱스를 나타낸다.
- end: 복사를 종료할 인덱스. 이 인덱스에 해당하는 요소는 복사되지 않는다. end는 생략 가능하며 생략시 기본값은 length 프로퍼티 값
얕은복사와 갚은 복사
slice메서드, 스프레드문법, Object.assign 모두 얕은 복사를 수행. 깊은 복사를 위해서는 Lodash 라이브러리의 cloneDeep 메서드 사용을 추천
join 메서드는 원본 배열의 모든 요소를 문자열로 변환 후, 인수로 전달받은 문자열, 즉 구분자로 연결한 문자열을 반환하다. 구분자는 생략 가능하며 기본 구분자는 콤마.
배열의 순서를 반대로 뒤집는다. 배열이 변경되며 반환값은 배열이다.
ES6에서 도입된 fill 메서드는 인수로 전달받은 값의 배열의 처음부터 끝까지 요소를 채운다. 이때 원본 배열이 변경된다.
ES7에서 도입된 includes 메서드는 배열 내에 특정 요소가 포함되어 있는지 확인하여 true 또는 false를 반환한다.
ES10에서 도입된 flat 메서드는 인수로 전달한 깊이만큼 재귀적으로 배열을 평탄화한다.
중첩 배열을 평탄화할 깊이를 인수로 전달할 수 있다. 인수를 생략할 경우 기본값은 1이다. 인수로 Infinity를 전달하면 중첩 배열 모두를 평탄화한다
TIL
- concat, push, unshift 등의 차이점! 무엇을 저장하고 할당해야 하는지! 그런데 동시에 기승전 스프레드 문법을 일관적으로 사용할 것.
- 얕은 복사 개념 복습!
- 아래 코드에서 왜 스프레드를 써야 하는 지 알수 있다.
- Can you explain 'slice.call ➡️ from ➡️ ...스프레드'
- includes, join 등등 모두 파이썬하면서 배웠던 거지롱😝 뭐든 제대로 배우면 다 쓴다.
- 이런 메서드 배울 때 이건 암기하는게 아니야~ 하면서 집중력 놓지 말고 머리 어딘가 저장시켜놓는다 생각하고 변수, 구조 바꿔가보면서 해보자.
function sum() {
//유사 배열 객체를 배열로 전환(ES5)
var arr = Array.prototype.slice.call(arguments);
console.log(arr); //[ 1, 2, 3 ]
return arr.reduce((per,cur)=> {
return per + cur;
}, 0);
}
console.log(sum(1,2,3)); //6
function sumFrom() {
const arr = Array.from(arguments);
console.log(arr); //[ '강', '아', '지' ]
return arr.reduce((pre,cur)=> pre+cur, '결과는 : ');
}
console.log(sumFrom('강','아','지')); //결과는 : 강아지
function sumSpread() {
// 이터러블을 배열로 변환(ES6 스프레드 문법)
const arr = [...arguments];
console.log(arr); //[ 1, 2, 3 ]
return arr.reduce((pre,cur)=> pre+cur,0);
}
console.log(sum(1,2,3)) //6