코딩 테스트/프로그래머스

[JS] 배열 두 배 만들기 : map() , push (), apply( )

감귤밭호지차 2022. 12. 11. 01:38

아직 해결되지 않은 궁금증이 있는 게시물 

 

문제 설명

정수 배열 [ number ] 가 매개변수로 주어지고 이 [ numbers ] 의 각 원소에 두 배한 원소를 가진 배열을 return 하도록 solution 함수를 완성해보자. 

 

# 내가 처음 짠 코드 

function solution(numbers) {

    return numbers.map(n => n*2);
}

 

 

# 다른 사람들의 번뜩이는 코드 방식(1)

→ map() 함수에 push ()까지 사용 함. 

 

 

# 다른 사람들의 번뜩이는 코드 방식(2)

 

 

 

✔️사용한 함수 

 

 

①  map( ) 

배열에 있는 값들을 원하는 방식으로 변환 및 활용하고 싶을 때 사용합니다. 

각각 요소의 값에 연산자를 이용해서 값을 변경 할 수도 있고 필요한 부분만도 가져올 수 있는 듯 합니다..?

 

② push( )

배열의 마지막에 새로운 요소를 추가한 후, 변경 된 배열의 길이를 반환 합니다. - 기존의 배열을 수정합니다. 

const animals = [ 'pigs', 'cats', 'dogs'];

const count = animals.push('cows');

console.log(animals); // ['pigs', 'cats', 'dogs', 'cows'];
console.log(count); // 4

💡animals의 배열에 요소가 추가가 된 것을 알 수가 있고, count는 변경된 배열의 길이를 반환해줌. 

 

 

 

🖍️더 나아가기🖍️

 

 

①  Array.prototype.push.apply( 배열1, 배열2 )  : 배열 합치기! 

배열 1과 배열2를 합치기 위해 ( 배열 2의 요소들을 push하는 것 ) apply( )를 사용한다. ※ 두 배열을 합치기 위해서는 각 배열의 최대 개수에는 제한이 있으니 주의 

 

이 apply( )함수는 call ( )과 거의 유사하지만 call ( )은 함수에 전달된 " 인수 리스트 : 객체 "를 받는데 비해, apply ( )는 "인수들의 단일 배열"을 받습니다. 

 

apply () 메서드는 주어진 'this'값과 배열로 제공되는 arguments로 함수를 호출. 

→ func.apply ( thisArg; 영향 받을 배열 이름? - 없으면 null로 표현 , [argsArray; 적용할 배열 이름 ] )

const numbers = [ 5, 6, 2, 3, 7 ] ; 
const max = Math.max.apply(null, numbers); 

console.log(max); // 7  제일 큰 수 반환 

const min = Math.min.apply(null, numbers);

console.log(min); // 2 제일 작은 수 반환

 

② 

 

 

 

 

✳️참고 링크 :

배열과 관련된 Array 내장 함수 

MDN push () method

MDN apply () method