[TIL]splice, localeCompare, spilt과 정규표현식 사용

Kyle·2021년 1월 20일
0

TIL

목록 보기
1/4
post-thumbnail

Array splice 활용

let a = [1,2,4,5] 라는 배열이 있다. 중간 2,4 사이에 3을 넣고 싶으면 어떻게 할까??? 지금까지 값을 삭제할 때만 사용했던 splice메소드를 활용하면 된다. splice에 알아보자.

Syntax
array.splice(start, [,deleteCount [, item [, item2...]]])

위의 문법으로 해석하면 array의 start인덱스 부터 deleteCount만큼 삭제하고 입력받는 item들을 추가한다. 아래 몇가지 예시로 확인해보자.

deleteCount를 0으로 하면 삭제하는 값 없이 중간에 값만 추가할 수 있다.

const a = [1,2,4,5]
a.splice(2,0,3) //인덱스 2번에 3을 추가한다.
console.log(a) //[1,2,3,4,5]

a.splice(5,0,6,7) //인덱스 5번부터 6,7을 추가한다.
console.log(a) //[1,2,3,4,5,6,7]

start의 인덱스를 -1,-2와 같은 음수로 접근 할 수 있다.

맨 뒤의 값을 -1로 시작한다.

//위의 배열a를 이어서 활용하겠다.

a.splice(-3,2) //맨 뒤의 3번째(5)부터 2개를 지우겠다. [5,6]
console.log(a) //[1,2,3,4,7]

값을 삭제하고 입력하기

start인덱스부터 deleteCount만큼 삭제를 하고 뒤의 아이템을 추가로 삽입할 수 도 있다.

a.splice(-2,2,4,5) //맨뒤 2번째(4)부터 2개를 지우고 4,5,를 삽입한다.
console.log(a)[1,2,3,4,5]

splice의 리턴값

splice는 삭제한 요소를 담은 배열을 반환한다. 삭제한 요소가 없을 경우 빈 배열을 반환한다.

//위의 배열a를 이어서 활용하겠다.

console.log(a.splice(0,2)) //[1,2]
console.log(a) //[3,4,5]

console.log(a.splice(0,0,1,2)) //[] 
console.log(a) //[1,2,3,4,5]

String.localeCompare

str1.localeCompare(str2)는 str2를 st1문자열과 비교했을 때 정렬상 전에 오는 지 후에오는지 혹은 같은 순서에 배치되는지 알려주는 숫자를 반환한다.

ex)

'apple'.localeCompare('banana') // -1
'apple'.localeCompare('apple') // 0
'banana'.localeCompare('apple') // 1
'apple'.localeCompare('apple fruit') // -1

localeCompare()를 이용해 문자열 비교 함수를 손쉽게 만들 수 있다.

자바스크립트에서 기본 sort()는 아스키코드 기준으로 정렬해준다. 기본적으로 맨앞에 있는 문자열을 기준으로 정렬할 때는 편리하다.

하지만 ['name kyle','name kim','name park'] 이런식으로 2번째 값들을 기준으로 정렬하기는 쉽지않다. 이런 문제를 localeCompare()를 이용해 해결할 수 있다.

  • localeCompare()를 이용해 두번째 단어를 비교하고 만약 같다면 첫번째 단어를 비교하는 함수를 만들어보자.
const nameList = ['name kyle','name kim','name park']
//두번째 단어를 가져오는 함수
const secondWord = (str) => str.split(' ')[1] 

const compare = (str1,str2) =>{
  //두번째 단어로만 비교해서 n에 넣는다.
  const n = secondWord(str1).localeCompare(secondWord(str2))
  if(n!==0) return n //두 문자들이 같지 않는 경우에는 리턴
  //두 문자들이 같은 경우에는 원래 str1,str2(첫번째 단어 포함)을 비교한다.
  else return str1.localCompare(str2)
}

nameList.sort(compare)
console.log(nameList) //[ 'name kim', 'name kyle', 'name park' ]

활용 문제: leetcode_Reorder Data in Log Files


split 안에 정규표현식 사용하기

  • split안에 정규표현식이 사용가능하다. 내가 본 예제는 문자,숫자만 배열로 만드는 것이었다.
const intro = 'hello, my name is kyle! Welcome to 2021!! test1 test2 333test'
const parsedIntro = intro.split(/\W+/)
//["hello", "my", "name", "is", "kyle", "Welcome", "to", "2021", "test1", "test2", "333test"]

정말 편하게 활용할 수 있을 것만 같다. 이해를 해보려고 찾아봐도 사실 못찾겠다. 나중에 정규표현식과 split과 같은 메소드들을 어떻게 활용할 수 있는지도 알아봐야겠다.

활용 문제: leetcode_Most Common Word


profile
Kyle 발전기

0개의 댓글