언어·프레임워크/JavaScript

[JavaScript] 배열 메서드 forEach와 fill을 이용한 반복적인 배열 요소 생성(map 추가)

DandyNow 2023. 5. 1. 22:18
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
반응형