[배열].slice(부분배열을 추출할 인덱스 시작점, 부분배열을 추출할 인덱스 끝점)
배열의 slice메서드는 원본배열로부터 부분배열을 추출한 다름 새로운 배열로 반환한다.
원본배열은 변경되지 않고, 레퍼런스를 복사하는 얕은 복사이다.
const words = ['car', 'paper', 'mobile', 'computer', 'school', 'sun', 'house']
const slicedWords = words.slice(2, 4)
console.log(slicedWords)
좌변에 대괄호([])를 사용하고 변수를 지정하면 해당 변수에 배열요소가 복사된다.
콤마(,)는 배열에서 콤마 위치의 배열요소는 건너뛴다는 의미이다. 콤마 위치를 건너뛰고, 세번째 배열요소가 복사된다.
const fruits = ['apple', 'banana', 'orange', 'lemon', 'watermelon']
const [,,thirdFruit] = fruits
console.log(thirdFruit)
배열의 마지막 요소를 추출할때, reverse메서드로 배열원소의 순서를 뒤바꾼다음 복사한다.
const fruits = ['apple', 'banana', 'orange', 'lemon', 'watermelon']
const [lastFruit] = fruits.reverse()
console.log(lastFruit)
스프레드 연산자(...)를 사용하면 첫번째 배열요소를 제외한 나머지 요소들로 이우러진 부분배열을 추출할 수 있다.
const fruits = ['apple', 'banana', 'orange', 'lemon', 'watermelon']
const [firstFruit, ...rest] = fruits
console.log(rest)
스프레드 연산자를 배열사이에 넣으면 오류가 발생한다.
const fruits = ['apple', 'banana', 'orange', 'lemon', 'watermelon']
const [firstFruit, ...rest, lastFruit] = fruits
console.log(rest)
[새로운 배열] = [배열 1].concat(배열 2)
배열의 concat메서드는 배열 1과 배열 2의 배열요소들을 하나로 합쳐셔 새로운 배열을 반환. 기존 배열들은 변경되지 않음.
const words = ['car', 'mobile', 'sun', 'foot', 'pen']
const numbers = [1, 2, 3]
const unitedArr = words.concat(numbers)
console.log(unitedArr)
concat메서드 대신 스프레드 연산자를 사용하여도 같은 동작이 가능하다.
const words = ['car', 'mobile', 'sun', 'foot', 'pen']
const numbers = [1, 2, 3]
const unitedArr = [...words, ...numbers]
console.log(unitedArr)
[배열].join(구분문자)
배열의 join 메서드는 인자로 주어진 구분문자를 연결고리로 삼아 배열요소들을 하나의 문자열로 변경한다. 배열의 길이가 0이면 빈 문자열을 반환한다.
const fruits = ['apple', 'banana', 'orange']
const fruitsStr = fruits.join(' ')
console.log(fruitsStr)
[배열] = 문자열.split(구분문자)
문자열의 split 메서드는 인자로 주어진 구분문자를 기준으로 문자열을 여러개의 문자열로 쪼개준다.
빈 문자열인 경우 하나의 요소만 가진 배열로 반환한다.
const str = ''
const strSeprated = str.split()
console.log(strSeprated)
구분문자를 설정하기 않으면 문자 전체를 요소로 가진 배열을 반환한다.
const sentence = 'I joined swimming club in my highschool'
const splitedSentence = sentence.split()
console.log(splitedSentence)
구분문자로 빈 문자열을 준다면 문장을 문자 하나씩 잘라서 배열로 반환한다.
const sentence = 'I joined swimming club in my highschool'
const splitedSentence = sentence.split('')
console.log(splitedSentence)
공백을 구분문자로 주면 공백을 기준으로 배열을 반환한다.
const sentence = 'I joined swimming club in my highschool'
const splitedSentence = sentence.split(' ')
console.log(splitedSentence)
구분문자에 정규표현식을 설정할 수 있다. 대괄호 안에 구분문자를 여러개로 설정하면 해당하는 구분문자가 있을경우 그 구분문자를 사용 하여 문자열을 잘라준다.
const sentence = 'I (joined) swimming <club> in my highschool'
const splitedSentence = sentence.split(/[()<>]/)
console.log(splitedSentence)
split메서드에 두번째 인자는 구분문자로 끊어진 배열의 길이를 설정할 수 있다.
const sentence = 'I joined swimming club in my highschool'
const splitedSentence = sentence.split(' ', 3)
console.log(splitedSentence)
split의 구분문자로 배열을 사용할 수 있다. 배열요소를 콤마로 구분된 하나의 문자열로 만들어 구분한다. 아래코드의 구분문자는 ^.^ 이 된다.
const sentence = 'I^,^joined^,^swimming^,^club^,^in^,^my^,^highschool'
const splitedSentence = sentence.split(['^', '^'])
console.log(splitedSentence)
split, filter 메서드를 함께 사용하여 문자열에서 club 이라는 부분 문자열이 몇번 들어가 있는지 검사한다.
const sentence = 'I joined swimming club in my highschool. that club was awsome !'
const foundedKeyword = sentence.split(' ').filter(word => word === 'club')
console.log(foundedKeyword.length)
문자열을 문자 하나씩 잘라낸 뒤 reverse메서드로 뒤짚고 join 메서드로 하나로 합친다.
const sentence = '?죠밌재 트립크스바자'
const splitedSentence = sentence.split('').reverse().join('')
console.log(splitedSentence)
함수 체이닝을 사용하여 split,map,join 메서드를 연쇄적으로 실행한다. 문자열에서 club이ㅏ 들어가는 단어를 아이콘으로 교체 하는 코드. map 메서드는 반드시 return 이 필요하다.
const sentence = 'I joined swimming club in my highschool. that club was awsome !'
const modifiedSentence = sentence.
split(' ')
.map(word => {
return word = word === 'club' ? `${word} 🏊` : word
})
.join(' ')
console.log(modifiedSentence)