ABOUT ME

먹는걸 좋아하고 다양한 일을 하며 살고 싶어하는 파워J 개발자 블로그

Today
Yesterday
Total
  • [JS] array 중복 제거
    Engineering WIKI/Js 2019. 9. 4. 00:54
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    const array = ['a' , 12'a' , 'a'3];
     
    // 1: 'Set'
    [...new Set(array)];
    // 2: 'Filter'
    array.filter((item, index) => array.indexOf(item) === index);
    // 3: 'Reduce'
    array.reduce((unique, item) =>
      unique.includes(item) ? unique : [...unique, item], []);
    // RESULT:
    // ['a', 1, 2, 3]
    cs

     

     

    1
    2
    3
    4
    5
    6
    7
    Set
    Set 은 ES6 에서 등장한 새로운 data object 입니다. Set 은 unique 값만 저장할 수 있도록 하기 때문에 array에 넣게 되면, 중복되는 값이 사라집니다.
    … spread operator 에 대해서는 다른 설명 하지 않겠습니다.
    또한 array 에 Set 을 이용하는 것 대신에 Array.from 도 가능합니다.
    const array = ['0'12'0''0'3]
    Array.from(new Set(array));
    // ['0', 1, 2, 3]
    cs

     

    1
    2
    3
    4
    5
    6
    7
    8
    2. Filter
    이 방법을 이해하기 위해서는 fileter 와 indexOf 메소드를 이해해야 합니다.
    indexOf 는 array 안에서 값을 제일 먼저 찾은 위치입니다.
    filter는 array 내의 각 element 에 조건을 주어, true 값을 return 한 element 만 모아서 새로운 array 를 만드는 것입니다.
    반대로 중복값만 가져올 수도 있습니다.
    const array = ['0'12'0''0'3]
    array.filter(item, index) => array.indexOf(item) !== index);
    // ['0', '0']
    cs

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    3. Reduce
    reduce 메소드는 array 의 각 요소를 줄여주는데 사용됩니다. 그리고 그것들을 모아 최종 array 로 결합해주는데 이 때 전달 된 reduce 함수가 사용됩니다.
    이 경우에, 넘겨준 reducer 함수는 최종 array에 값이 있는지 확인합니다. 포함 되어있지 않으면 최종 array 로 푸시하고, 아니면 건너 뛰고 return 합니다.
    Reduce 는 항상 이해하기가 좀 난해한데, 아래 코드와 함께 결과를 확인해 봅시다.
    const array = ['0'12'0''0'3];
    array.reduce((unique, item) => {
      console.log(
        // a. Item
        item,
        // b. Final Array (Accumulator)
        unique,
        // c. 조건(이 조건이 false여야만 값이 푸시된다
        unique.includes(item),
        // d. Reduce Function Result
        unique.includes(item) ? unique : [...unique, item],
      );
      return unique.includes(item) ? unique : [...unique, item]
    }, []); // 초기 Accumulator 는 빈 array 이다
    cs

     

    'Engineering WIKI > Js' 카테고리의 다른 글

    [JS] FormData  (0) 2020.11.29
    [JS] formData를 console.log 출력  (0) 2020.11.29
    [Js] this 개념 및 활용  (0) 2020.04.26
    [Js] IE Default Error  (0) 2020.04.05
    [JS] select의 선택된 값 구하기  (0) 2020.04.05
    [Jquery] HTML 태그 바꾸기  (0) 2019.08.17
    [Js] 따옴표 안에 따옴표  (0) 2019.08.12
    [Js] setInterval vs setTimeout  (0) 2019.05.04
Designed by Tistory.