計算機科学のブログ

関数 デフォルトパラメータとレストパラメータ

入門JavaScriptプログラミング (JD Isaacks(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT3(関数)、LESSON 15(デフォルトパラメータとレストパラメータ)、15.6(練習問題)、Q15-1の解答を求めてみる。

コード

let car = function (seats = 4) {
    return {
        seats,
        board(driver, ...passengers) {
            let ps1 = passengers.slice(0, seats - 1),
                ps2 = passengers.slice(seats - 1);

            console.log(`ドライバー: ${driver}`);
            if (ps1.length !== 0) {
                console.log('乗車できる乗客');
                ps1.forEach(function (p) {
                    console.log(p);
                });
            }
            if (ps2.length !== 0) {
                console.log('乗車できない乗客');
                ps2.forEach(function (p) {
                    console.log(p);
                });
            }
        },
    };
};

let car1 = car();
car1.board('d1');
car1.board('d1', 'p1', 'p2', 'p3');
car1.board('d1', 'p1', 'p2', 'p3', 'p4');
car1.board('d1', 'p1', 'p2', 'p3', 'p4', 'p5');

let car2 = car(2);
car2.board('d2');
car2.board('d2', 'p1', 'p2', 'p3');
car2.board('d2', 'p1', 'p2', 'p3', 'p4');
car2.board('d2', 'p1', 'p2', 'p3', 'p4', 'p5');

入出力結果(Console)

% node sample1.js
ドライバー: d1
ドライバー: d1
乗車できる乗客
p1
p2
p3
ドライバー: d1
乗車できる乗客
p1
p2
p3
乗車できない乗客
p4
ドライバー: d1
乗車できる乗客
p1
p2
p3
乗車できない乗客
p4
p5
ドライバー: d2
ドライバー: d2
乗車できる乗客
p1
乗車できない乗客
p2
p3
ドライバー: d2
乗車できる乗客
p1
乗車できない乗客
p2
p3
p4
ドライバー: d2
乗車できる乗客
p1
乗車できない乗客
p2
p3
p4
p5
%