slice : 원본은 변하지 않고, 잘려진 배열을 반환
array.slice(start, end)
array.slice()
를 활용해서 얕은 복사 가능하다.splice : 배열의 기존 요소를 삭제나 교체하거나 새 요소를 추가할때 사용된다.
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// inserts at index 1
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, 'May');
// replaces 1 element at index 4
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "May"]
function flattenArrReduce(arr) {
return arr.reduce((acc, cur) => {
if (!Array.isArray(cur)) {
acc = [...acc, cur];
} else {
acc = [...acc, ...flattenArrReduce(cur)];
}
return acc;
}, []);
}
알고리즘 문제를 원할하게 풀려면 문자열을 능숙하게 다룰 수 있어야 한다.
programmers에서 js 문제를 몇개 풀어보니, 문자열 관련 함수의 레퍼런스를 찾느라 시간이 많이 쓰였다.
문자열 관련해서 꼭꼭 정리하고 넘어가보자.
따라서 모든 string 메소드는 새로운 문자열을 생성해서 반환한다.
특정 문자나 문자열이 처음으로 등장하는 위치, 마지막으로 등장하는 위치를 반환
찾을 수 없으면 -1을 반환한다.
str.indexOf(searchString)
str.lastIndexOf(searchString)
str.charAt(index)
: 문자 자체str.charCodeAt(index)
: 아스키 코드str.codePointAt(index)
: 유니코드str.slice(start, [end])
, 음수 인덱스는 끝에서부터 적용str.substring(start, [end])
str.substr(start, [count])
전부 다 적용가능.
str.concat(anotherStr)
str + anotherStr
str += anotherStr
어디에 속한 메서드인지 잘 기억해야 오류없이 사용가능 하다.
str.trim()
str.startsWith(string)
str.endsWith(string)
str.toUpperCase()
모든 문자를 대문자로str.toLowerCase()
무슨 역할을 하는 코드인지 이해해 보자.
function solution(s) {
return s.split(" ").map(v => v.charAt(0).toUpperCase() + v.substring(1).toLowerCase()).join(" ");
}
아래의 코드를 이해해 보자
String(null | undefined);
const myStr = '12345678';
myStr.slice(1, -1);
myStr.slice(-1);
myStr.slice(-1, -3);
myStr.substring(-3, -1); // 음수를 인자로 받으면 어떻게 되나??