코딩쌀롱

Algorithm Day(배열중복제거, let, const) 본문

개발공부

Algorithm Day(배열중복제거, let, const)

이브✱ 2020. 12. 16. 21:37

📌 배열의 중복 원소 제거

  1. Set
  2. reduce()
  3. reduce(), indexOf()
  4. filter(), indexOf()
const arr = [2, 1, 5, 1, 6, 5, 2, 3];

// 1. Set
// Set을 사용하면 유니크한 Set객체를 반환.
// Set 객체를 다시 Array.form으로 배열로 변경
const set = Array.from(new Set(arr)); 

// 2. reduce
// Array.includes(value): value가 Array에 존재하는지 판단해 true,false 반환
arr.reduce((acc, curr) => acc.includes(curr) ? acc : [...acc,curr], []);

// ES6을 사용 못 할 때

// 1. reduce, indexOf
arr.reduce(function(acc, curr, index) {
    acc.indexOf(curr) > -1 ? acc : acc.push(curr);
    return acc;
}, []);

// 2. filter, indexOf
arr.filter(function(el, idx, arr) {
    return arr.indexOf(el) === idx;
});


// 결과값은 모두 [2, 1, 5, 6, 3]


📌 let, const

✱기본형 변수 선언

  • let, const 공통점은 변수를 선언할 때 사용된다는 것
  • 값의 변경이 필요할 경우 let, 값의 변경이 필요 없는 상수로 사용될 경우 const

✱참조형 변수 선언 → const

참조형 변수(object, array, function)를 사용할 때는 const로 선언하는 것이 바람직하다.

// 값의 변경 O, 재할당 X
const arr = [];
arr.push(1); 
console.log(arr); // [1]

const obj = {value: 1};
obj.value = 2;
console.log(obj); // {value: 2};

위 코드를 볼 때 값의 변경이 있었지만 오류는 발생하지 않는다. 변수 자체가 재할당되지 않았기 때문이다. const는 참조하는 메모리 주소가 변하지 않는 변수를 선언할 때 사용한다.

Comments