Web/Javascript

[Javascript] 모던 JS 5.5 (배열과 메서드) 과제

동띵 2022. 5. 25. 15:01

1) border-left-width를 borderLeftWidth로 변경하기

function camelize(str) {
    return str
    .split("-")
    .map((s) => (
        s[0].toUpperCase()+s.slice(1)
    ))
    .join('');
}

 

2) 특정 범위에 속하는 요소 찾기

function filterRange(arr, a, b) {
    let result = [];
    arr.map((num) => (
        (num >= a && num <=b) ? result.push(num) : null
    ));
    return result;
}

 

3) 특정 범위에 속하는 요소 찾기 (배열 변경하기)

function filterRangeInPlace(arr, a, b) {
    for (let i=0; i<arr.length; i++) {
        if (arr[i] >= a && arr[i] <= b) continue;
        else {
            arr.splice(i, 1);
            i--;
        }
    }
    return arr;
}

 

4) 내림차순으로 정렬하기

arr.sort((a,b) => b-a);

 

5) 배열 복사본을 정렬하기

function copySorted(arr) {
    return arr.slice().sort();
}

 

6) 확장 가능한 계산기

function Calculator() {

    this.method = {
        "-": (a, b) => a-b,
        "+": (a, b) => a+b,
    };
    
    this.calculate = function(str) {
        let split = str.split(' ');
        a = +split[0];
        op = split[1];
        b = +split[2];

        if (isNaN(a) || isNaN(b) || !this.method[op]) return NaN;
        return this.method[op](a, b);
    };

    this.addMethod = function(name, func) {
        this.method[name] = func;
    };
}

 

7) 이름 매핑하기

let names = users.map(item => item.name);

 

8) 객체 매핑하기

let usersMapped = users.map(item => ({
    fullName: `${item.name} ${item.surname}`,
    id: item.id
}))

 

9) 나이를 기준으로 객체 정렬하기

function sortByAge(users) {
  return users.sort((a, b) => a.age - b.age);
}

 

10) 배열 요소 무작위로 섞기

function shuffle(array) {
    return array.sort(() => Math.random() - 0.5);
}

 

11) 평균 나이 구하기

// reduce 사용
function getAverageAge(users) {
    return users.reduce((prev, user) => prev+user.age, 0) / users.length;
}

// for문 사용
function getAverageAge(users) {
    let avg = 0;
    for (let i=0; i<users.length; i++) {
        avg += users[i].age;
    }
    avg = Math.floor(avg / users.length);
    return avg;
}

 

12) 중복 없는 요소 찾아내기

// set 사용
function unique(arr) {
    return new Set(arr);
}

// includes 사용
function unique(arr) {
    let result = [];
    for (let str of arr) {
        if (!result.includes(str)) result.push(str);
    }
    return result;
}

 

13) Create keyed object from array

function groupById(users) {
    return users.reduce((obj, value) => {
        obj[value.id] = value;
        return obj;
    }, {});
}