Dandy Now!
  • [JavaScript] 배열 메서드 forEach와 fill을 이용한 반복적인 배열 요소 생성(map 추가)
    2023년 05월 01일 22시 18분 15초에 업로드 된 글입니다.
    작성자: DandyNow
    728x90
    반응형

    알고리즘 문제를 풀이하다가 [1, 2, 1, 2, 1, 2, 1] 이렇게 생긴 배열이나 [1, 1, 2, 2, 3, 3, 4]와 같은 배열이 필요했다. 제출한 문제는 for문을 사용해 해결했는데 forEach 배열 메서드로 해당 배열을 만들어 보고 싶었다. 작성한 코드는 아래와 같다.

    let n = 2;
    let arr = ["hello", "one", "even", "never", "now", "world", "draw"]; // 이 배열과 대응하는 정수 요소의 배열을 생성하는 것이 목적이다.
    
    const newArr = new Array(arr.length);
    const result = [];
    newArr.fill(1);
    newArr.forEach((_, idx) => {
      if ((idx + 1) % n === 0) {
        result.push(n);
      } else {
        result.push((idx + 1) % n);
      }
    });
    
    console.log(result);
    
    // 출력 결과 : [1, 2, 1, 2, 1, 2, 1]

     

    let n = 2;
    let arr = ["hello", "one", "even", "never", "now", "world", "draw"]; // 이 배열과 대응하는 정수 요소의 배열을 생성하는 것이 목적이다.
    
    const newArr = new Array(arr.length);
    const result = [];
    newArr.fill(1);
    let num = 1;
    newArr.forEach((_, idx) => {
      if ((idx + 1) % n === 0) {
        result.push(num);
        num++;
      } else {
        result.push(num);
      }
    });
    
    console.log(result);
    
    // 출력 결과: [1, 1, 2, 2, 3, 3, 4]

     


    배열 메서드  map을 이용한 코드를 아래와 같이 추가로 작성해 보았다.

    let num = 1;
    const result = arr.map((el, idx) => {
      if ((idx + 1) % n === 0) {
        return n;
      } else {
        return (idx + 1) % n;
      }
    });
    
    // 출력 결과 : [ 1, 2, 1, 2, 1, 2, 1]

     

    let num = 1;
    const result = arr.map((el, idx) => {
      if ((idx + 1) % n === 0) {
        let temp = num;
        num++;
        return temp;
      } else {
        return num;
      }
    });
    
    // 출력 결과 : [1, 1, 2, 2, 3, 3, 4]
    728x90
    반응형
    댓글