문제

코드
function solution(arr)
{
const newArr = [arr[0]];
for(let i=1; i<arr.length; i++) {
if(newArr[newArr.length-1] === arr[i]) continue;
newArr.push(arr[i]);
}
return newArr;
return arr.filter((n, i) => n !== arr[i+1]);
}
for를 이용한 구식 내가 푼 풀이
- for문으로 각 index를 돌려 newArr의 마지막 요소와 비교
- 컴퓨터가 생긴 초창기 사람들이 이렇게 풀지 않았을까 싶다.
filter 이용한 간단풀이
- filter로 숫자와 index를 받음
- 현재 숫자와 arr의 다음 index가 같지 않다면 return
- 마지막 요소는 n과 undefined가 다르기 때문에 true
번외(중복값 제거)
const dupArr = [1, 2, 3, 1, 2];
const set = new Set(dupArr);
const uniqueArr = [...set];
const uniqueArr = dupArr.filter((element, index) => {
return dupArr.indexOf(element) === index;
});
let uniqueArr = [];
dupArr.forEach((element) => {
if (!uniqueArr.includes(element)) {
uniqueArr.push(element);
}
});
new Set 이용
- set은 중복값을 허용하지 않음
- set.add(중복된 값)하면 중복값이기 때문에 추가가 안 됨
- 단, o={a:1} set.add(o) set.add({a: 1})는 서로 다른 객체를 참조하므로 가능
- set과 배열은 다르기 때문에 마지막에 ...set 필요
indexOf와 filter 이용
- indexOf는 가장 빠른 element index만 리턴
- 첫 index와 맞지 않은 index는 모두 제거
forEach와 includes 이용
- arr의 모든 요소 비교하여 uniqueArr에 포함되지 않았으면 push
참고 사이트