javascript technique for algorithms 배열이나 문자열에서 중복을 제거해야 할 때 배열이나 문자열에서 딱 1개만 있는 요소를 찾아야 할 경우 배열에 규칙적인 연속된 값 할당해야할 경우 배열에 최대값/최소값을 찾아야 할 경우 지정된 숫자를 자신보다 작은, 가까운 정수로 내림해야 할 경우 지정된 숫자를 자신보다 큰, 가까운 정수로 올림해야 할 경우


1. 원본을 유지하면서, 삭제하는 방법


array 메소드 중, slice()를 사용하면, 원본을 유지하면서, 삭제된 새로운 배열을 생성할 수 있다.

1
2
3
4
5
const arr = [1,2,3,4,5];
const newArr = [...arr.slice(0,3), ...arr.slice(4)]; // 3번째 인덱스 삭제

console.log(newArr); // [1,2,4,5]
console.log(arr); // [1,2,3,4,5]

2. 원본을 변경하면서, 삭제하는 방법


array 메소드 중, splice()를 사용하면, 특정 요소를 삭제함으로써, 원본이 변경된 배열이 된다.

1
2
3
const arr = [1,2,3,4,5];
arr.splice(3,1); // 3번 인덱스부터 1개를 삭제
console.log(arr); // [1,2,3,5]

배열이나 문자열에서 중복을 제거해야 할 때


Set을 사용해서 중복을 제거할 수 있다.(Set은 unique한 자료형만을 저장한다.)

1
2
3
4
5
6
7
8
9
10
11
// 배열
const arr = [1, 3, 2, 9, 9, 1, 5, 1, 4, 5, 2];
console.log(new Set(arr)); // { 1, 3, 2, 9, 5, 4 }
const newArr = [...new Set(arr)];
console.log(newArr); // [ 1, 3, 2, 9, 5, 4 ]

// 문자열
const str = "abcdacbe";
console.log(new Set(str)); // { 'a', 'b', 'c', 'd', 'e' }
const newStr = [...new Set(str)].join('');
console.log(newStr); // "abcde"

배열이나 문자열에서 딱 1개만 있는 요소를 찾아야 할 경우


array 메소드 중, filter()indexOf()를 사용하면, 딱 1개만 있는 요소를 찾을 수 있다.

1
2
3
4
5
6
7
8
9
// 배열
const arr = [3, 3, 3, 7, 3];
const filterArr = arr.filter( elem => arr.indexOf(elem) === arr.lastIndexOf(elem) );
console.log(filterArr); // [7]

// 문자열
const str = '33373';
const filterStr = str.split('').filter( elem => str.indexOf(elem) === str.lastIndexOf(elem) );
console.log(filterStr); // ['7']

배열에 규칙적인 연속된 값 할당해야할 경우


Array()fill()를 사용한다.

1
2
3
4
const newArr = Array(5).fill(2);
console.log(newArr); // [2, 2, 2, 2, 2]
const newArr2 = Array(5).fill(1).map( (elem, i) => elem + i );
console.log(newArr2); // [1,2,3,4,5]

배열에 최대값/최소값을 찾아야 할 경우


Math.max(), Math.min()를 사용한다.

1
2
3
4
5
6
7
8
9
// 최대값
const arr = [1, 2, 3];
const max = Math.max(...arr); // 3
console.log(max);

// 최소값
const arr = [1, 2, 3];
const min = Math.min(...arr); // 3
console.log(min);

지정된 숫자를 자신보다 작은, 가까운 정수로 내림해야 할 경우


Math.floor()를 사용한다.

1
2
3
4
5
6
7
8
9
const floor1 = Math.floor(2.9); // 2
const floor2 = Math.floor(9.1); // 9
const floor3 = Math.floor(-1.9); // -2
const floor4 = Math.floor(-9.1); // -10

console.log(floor1);
console.log(floor2);
console.log(floor3);
console.log(floor4);

지정된 숫자를 자신보다 큰, 가까운 정수로 올림해야 할 경우


Math.ceil()를 사용한다.

1
2
3
4
5
const ceil1 = Math.ceil(1.1);  // 2
const ceil2 = Math.ceil(-1.4); // -1

console.log(ceil1);
console.log(ceil2);