[JS] CDT 로 배우는 Javascript 기능과 기술들 [8.0]

김현수·2023년 10월 17일
0

cdt

목록 보기
8/51


📰 Coding Test 에서 익히는 javscript 기능과 기술 등


Array 의 "slice"

  • swallow copy / 얕은복사
  • 배열을 복사하는 데 사용
  • 원래의 배열을 수정하지 않고 그 배열의 사본을 반환
function solution(emergency) {
  				// [...emergency]
    let sorted = emergency.slice().sort((a,b)=>b-a);
    return emergency.map(v=>sorted.indexOf(v)+1);
}

Object 의 "entries" 이용하여 객체 키:값 바꾸기

  • [key, value] 쌍의 배열을 반환
const obj = {
	1 : "a",
	2 : "b",
	3 : "c",
}

const swappedObj = Object.entries(obj).reduce((acc, [key, value]) => {
        acc[key] = value;
        return acc;
}, {});

console.log(swappedObj);
[결과]
{"a" : 1, "b" : 2, "c" : 3}

팩토리얼

  • 재귀
const fact = (num) => num === 0 ? 1 : num * fact(num - 1);
  • reduce 이용
const fact = (n) => {
        return Array.from({length: n}, (_, i) => i + 1)
            .reduce((acc, cur) => acc * cur ,1)
    };

경우의 수

  • n! / ((n-m)! * m!)
function solution(balls, share) {
    
    const fact = (n) => {
        return Array.from({length: n}, (_, i) => i + 1)
            .reduce((acc, cur) => acc * cur ,1)
    }
    
    if(balls === share) return 1;
    
    return Math.round(fact(balls) / (fact(balls - share) * fact(share)));
}

Math 의 "round / ceil / floor"

const num1 = 12.2;
const num2 = 12.7;

console.log(Math.round(num1)); // 12
console.log(Math.ceil(num1)); // 13

console.log(Math.round(num2)); // 13
console.log(Math.floor(num2)); // 12

2 차원 배열 선언

const arr = [];
for (let i = 0; i < 4; i+=1) {
     arr[i] = [];
}

console.log(arr); // [[],[],[],[]]

Array 의 "shift() / unshift()"

  • shift()
    • 첫 번째 요소를 제거 후, 그 요소를 반환
let fruits = ["apple", "banana", "cherry"];
let firstFruit = fruits.shift();

console.log(firstFruit); // "apple"
console.log(fruits); // ["banana", "cherry"]
  • unshift()
    • 하나 이상의 요소를 배열의 시작점에 추가 후, 새로운 길이를 반환
let fruits = ["banana", "cherry"];
let newLength = fruits.unshift("apple", "mango");

console.log(newLength); // 4
console.log(fruits); // ["apple", "mango", "banana", "cherry"]
profile
일단 한다

0개의 댓글