WEB/JavaScript

[ES6] [Part2] default parameter, arguments, rest parameter, spread

Harimad 2022. 1. 20. 20:11

🔖TAG 💡arguments, 💡Default, 💡REST, 💡SPREAD 📗

자바스크립트 함수 업그레이드하기 (default parameter/arguments)

 

<script>
// 함수의 default 파라미터 넣기
function 더하기(a, b = 10, c = 2 * 5, d = 2 * a) {
    console.log(a, b, c, d);
}
더하기(1); // 1 10 10 2

// default 파라미터엔 함수입력도 가능
function 임시함수() {
    return 10
}
function 더하기(a, b = 임시함수()) {
    console.log(a + b);
}
더하기(3); // 3 + 10 = 13

//함수의 arguments (모든 파라미터들을 전부 한꺼번에 싸잡아서 다루고 싶은 경우 사용)
function 함수(a, b, c) {
    console.log(arguments);
}
함수(2, 3, 4);
</script>

 

함수에서 쓰는 점3개 Rest 파라미터

 

<script>
//Rest Parameter Concept
function 함수(...파라미터들) {
    console.log(파라미터들);
}
함수(1, 2, 3, 4, 5, 6, 7); // [1, 2, 3, 4, 5, 6, 7]

function 함수2(a, b, ...파라미터들) {
    console.log(파라미터들);
}
함수2(1, 2, 3, 4, 5, 6, 7); //[3, 4, 5, 6, 7]

// rest 파라미터 주의사항
// 1. rest는 항상 마지막 파라미터로 넣어야함
function 함수3(a, ...파라미터들, b) { //Error
    //....
}
// 2. rest파라미터 2개 이상 사용 안됨
function 함수4(a, ...파라미터들, ...파라미터들2) { //Error
    //...
}
</script>

 

Spread, rest 파라미터 연습문제 8개

<script>
//spread는 문자의 '', 배열의 [], 객체의 {}를 벗겨주는 역할을 한다


// 1. spread 문제 1

var a = [1, 2, 3];
var b = '김밥';
var c = [...b, ...a];
console.log(c); //['김', '밥', 1, 2, 3] //string은 spreadOperator에서 쪼개져서 저장됨


// 2. spread 문제 2

var a = [1, 2, 3];
var b = ['you', 'are'];
var c = function (a, b) {
    console.log([[...a], [...b]]); // [ [1, 2, 3], ['you', 'are'] ]
    console.log([[...a], ...[...b]]); // [ [1, 2, 3], 'you', 'are']
    console.log([[...a], ...[...b]][1]); // you
}
c(a, b);


// 3. default 파라미터 문제 1

function 함수0(a = 5, b = a * 2) {
    console.log(a + b);
    return 10
}
함수0(3); // 9


// 4. default 파라미터 문제 2

function 함수1(a = 5, b = a * 2) {
    console.log(a + b);
}
함수1(undefined, undefined); // 15


// 5. array를 만들어주는 함수를 제작하고 싶습니다.

function makeArray(...rest) {
    return rest;
}
var newArray = makeArray(1, 2, 3, 4, 5);
console.log(newArray); // [1, 2, 3, 4, 5]


// 6. 최댓값 구하기

var numbers = [2, 3, 4, 5, 6, 1, 3, 2, 5, 5, 4, 6, 7];
console.log(Math.max(...numbers));


// 7. 글자를 알파벳순으로 정렬해주는 함수를 만들고 싶습니다.

console.log(['b', 'c', 'a'].sort()); // ['a', 'b', 'c']

function 정렬(글자) {
    console.log([...글자]); // ['b', 'e', 'a', 'r']
    console.log([...글자].sort()); // ['a', 'b', 'e', 'r']
    console.log([...글자].sort().join()); // a,b,e,r
}
정렬('bear');


// 8. 데이터마이닝 기능 만들기
//--1--스택오버플로우----//
function 글자세기([...문자]) {
    console.log(문자); // ['a', 'a', 'c', 'b', 'b', 'b']
    console.log(문자.sort()); // ['a', 'a', 'b', 'b', 'b', 'c']

    return 문자.sort().reduce((count, word) => {
        count[word] = (count[word] || 0) + 1;
        return count;
    }, {});
}
console.log(글자세기('aacbbb')) // { a : 2, b : 3, c : 1 }
console.log(글자세기('asldlksamdksladlwndlajsdkjlsakdasdl'));

//--2--apple쌤꺼----//
function 글자세기2(글자) {
    // console.log([...글자]); // foreach쓰기위해 글자를 array로 만들어줌 // ['a', 'a', 'c', 'b', 'b', 'b']

    var 결과 = {};
    // 만약에 결과에 a가 있으면 +1 해주고
    // 없으면 a : 1 집어넣으세요
    [...글자].forEach((a) => {
        if (결과[a] > 0) {
            결과[a] = 결과[a]++;
        } else {
            결과[a] = 1;
        }
    });
    console.log(결과);
}

글자세기2('aacbbb') // { a : 2, b : 3, c : 1 }
</script>

JS Deep Dive  참고
10장 - 객체 리터럴
26장 - ES6 함수의 추가 기능

 

 

 

https://stackoverflow.com/questions/40102199/counting-words-in-javascript-and-push-it-into-an-object

 

Counting words in javascript and push it into an object

I want to achieve a javascript program that count through a word and return the word and the number of times it appears eg {hello : 2, "@hello":1, world : 1, toString:1} below is my code but i onl...

stackoverflow.com