(임시저장)
코플릿을 풀면서 혼용하는 메서드가 몇 개 있어서 정리할 겸 적어보고자 한다.
배열에 쓰이는 메서드를 객체에 썼다가 에러가 나기도 하고,
이런 기능인 줄 알았다가 다른 기능이어서 당황했던 메서드들 위주로!
문자열과 배열에 모두 사용 가능하다.
매개변수로는 한 개, 혹은 두 개의 인자를 갖는다.
매개변수가 하나일 경우는 0부터 해당 인덱스 이전까지의 문자 혹은 배열을 반환한다.
음수로 사용될 경우에는 뒤에서부터 셈한다. 나는 외우기 쉽게 -3일 경우 뒤에서 3글자를 추출하는 걸로 이해했다.
매개변수가 두 개일 경우에는 첫 번째 인덱스부터 두 번째 인덱스 이전까지의 문자 혹은 객체를 반환한다.
주의사항! 문자는 immutive이기 때문에 slice를 해준다고 해도 기존의 문자열이 바뀌지는 않지만
배열의 경우 slice()를 해주면 기존의 배열은 변경하지 않고 새로운 배열을 복사한다.
그래서 만약 자르기 용도가 아니라 그냥 배열을 복사하는 기능으로 사용하기도 한다.
문자열에서만 사용 가능하다. 헷깔리는 건 문자열에서 사용하지만 결과는 배열이라는 것! 따라서 얘 역시도 원본 문자열에 변화를 주지 않는다.
배열에서 사용하지만 리턴은 문자열이다. 스플릿과 혼동하는 것이 이점이다. 스플릿은 문자열을 배열로, 조인은 배열을 문자열로 나타낸다.
문자열과 배열에서 모두 사용 가능하다.
객체끼리 합치는 것은 assign을 이용한다.
스플릿, 조인
let str = 'apples not oranges'
undefined
str.join(" ");
VM1089:1 Uncaught TypeError: str.join is not a function
at <anonymous>:1:5
(anonymous) @ VM1089:1
str.split();
["apples not oranges"]
str.split(' ');
(3) ["apples", "not", "oranges"]
str
"apples not oranges"
str.split(' ').join();
"apples,not,oranges"
str.split(' ').join(' ');
"apples not oranges"
str.split(' ').join('');
"applesnotoranges"
slice
let str = 'hello'
undefined
str.slice(0,10)
"hello"
str.slice(0,-1)
"hell"
str.slice(-1)
배열의 요소 추가 삭제!!! not 객체!!
배열과 객체를 자주 혼용해서 사용하는 것 같다.
push pop shift unshift
명령이기 때문에 별도의 결과값을 내지는 않음.
삭제는 슬라이스를 써도 됨. 이때는 새로운 배열이 복사되는 것에 주의
reverse()