プログラミングライフスタイル
Javascript問題集

Javascript問題集(関数)解答

「Javascript問題集(関数)」の解答は下記になります。

問題1の解答

オブジェクトを返す場合、return文にオブジェクトを直接指定します。

function generateHuman(name, age) {
	return {
		name: name,
		age: age
	};
}

問題2の解答

「コールバック関数」は、「関数の引数」として渡され、後で呼び出される関数です。

一般的に「非同期操作」に使用されます。

function printData(data, callback) {
    for (let i = 0; i < data.length; i++) {
        console.log(data[i]);
    }
    callback();
}

function callbackFunction() {
    console.log("Process Finished");
}

printData(["sun", "earth", "moon"], callbackFunction);

問題3の解答

「スプレッド構文」を使用すると、「配列」や「オブジェクト」を展開して、「関数の引数」として渡すことができます。

function sumData(a, b, c) {
	return a + b + c;
}
	
const numbers = [1, 2, 3];
console.log(susumDatamNumbers(...numbers));

問題4の解答

function getDoubleNumber(num) {
	return num * 2;
}

この関数は、「引数」として渡された数値を「2倍」にして、その結果を返します。

getDoubleNumber(3)

を呼び出すと、「6」が返されます。

問題5の解答

「ジェネレータ関数」は、「function」キーワードの後ろに「アスタリスク(*)」をつけて定義されます。

「ジェネレータ関数」は、値を返すとともに、「関数の実行」を一時停止し、後で再開することができます。

「ジェネレータ関数」では「nextメソッド」を呼び出すことで「yield」まで処理が実行されます。

function* sampleGenerator(data) {
	yield data * 2; //1回目の「nextメソッド」で実行
	yield data * 3; //2回目の「nextメソッド」で実行
	yield data * 4; //3回目の「nextメソッド」で実行
}
			
let generator = sampleGenerator(10);
console.log(generator.next().value);
console.log(generator.next().value);
console.log(generator.next().value);

問題6の解答

function reverseString(str) {
	return str.split("").reverse().join("");
}

この関数は、引数として渡された文字列を逆順にして、その結果を返します。

たとえば、「reverseString("abcde")」を呼び出すと、「"edcba"」が返されます。

問題7の解答

「クロージャー」は、関数内で定義された関数で、「外側の関数の変数」にアクセスすることができます。

「クロージャー」を使用すると、「外側の関数」が呼び出された後でも、「内側の関数」が「外側の変数」にアクセスすることができます。

function sample() {
	let data = "sampleData";
	function showData() {
		console.log(data);
	}
	showData();
}
sample();

問題8の解答

function isPdString(str) {
	let reversedStr = str.split("").reverse().join("");
	return str === reversedStr ? true : false; 
}

この関数は、引数として渡された文字列が「回文」であれば「true」を、そうでなければ「false」を返します。

たとえば、「isPdString("ada")」を呼び出すと、「true」が返されます。

問題9の解答

function getMax(arrayData) {
	let max = arrayData[0];
	for (let i = 1; i < arrayData.length; i++) {
		if (arrayData[i] > max) {
			max = arrayData[i];
		}
	}
	return max;
}

この関数は、「引数」として渡された「配列」の中で「最大値」を見つけて、その値を返します。

たとえば、

getMax([2, 5, 3, 7, 1, 8]);

を呼び出すと、「8」が返されます。

問題10の解答

「デフォルト引数」とは、「引数」が関数に渡されなかった場合に使用される値です。

「デフォルト引数」を指定するには、「引数」の後に「代入演算子」を使って値を指定します。

function greet(name = "World") {
    console.log(`Hello, ${name}!`);
}
greet(); //「引数」を指定していないため「引数name」はデフォルトの値「World」となる。

greet("Smith"); //「引数」を指定しているため、「引数name」は「Smith」となる

問題11の解答

function repeatProcess(func, times) {
	for (let i = 0; i < times; i++) {
		func();
	}
}

「for文」を使って、「指定された回数」だけ関数を繰り返し実行しています。

問題12の解答

function calcSquare(dataArray) {
	let squaredArr = [];
	for (let i = 0; i < dataArray.length; i++) {
		squaredArr.push(dataArray[i] * dataArray[i]);
	}
	return squaredArr;
}

この関数は、「引数」として渡された「配列の要素を2乗した値」を要素とする「新しい配列を作成」して、その結果を返します。

たとえば、

calcSquare([2, 5, 3, 7, 1, 8]);

を呼び出すと、

[4, 25, 9, 49, 1, 64]

が返ってきます。

問題13の解答

function isEven(num) {
	return num % 2 === 0 ? true : false;
}

この関数は、「引数」として渡された数値が偶数であれば「true」を、そうでなければ「false」を返します。

たとえば、

isEven(10)

を呼び出すと、「true」が返されます。

問題14の解答

関数内で「this」キーワードを使用すると、呼び出し元によって「this」の値が異なります。

関数からの呼び出しでは、「this」は「グローバルオブジェクト」になります。

オブジェクトの「メソッド」として呼び出された場合、「this」はそのオブジェクトを指します。

//オブジェクトの場合
const human = {
	name: "John doe",
	greet() {
		console.log(`Hello, ${this.name}!`);
		console.log(this); //「this」は「humanオブジェクト」
	}
};

human.greet();


//関数の場合
const otherFunc = () => {
	console.log(this);//「this」は「グローバルオブジェクト(window)」
}

otherFunc(); 

問題15の解答

function joinArrayData(arrayData, separator) {
	return arrayData.join(separator);
}

「joinメソッド」を使って、「配列の要素」を「指定された区切り文字」で結合した文字列を生成しています。

問題16の解答

「プロミス」を使用すると、「非同期操作」をより簡単に扱うことができます。

「プロミス」は、「非同期操作」が完了すると「resolve関数」を呼び出し、エラーが発生した場合は「reject関数」を呼び出します。

const process = new Promise((resolve, reject) => {
	//Success
	//処理に成功した時は「resolve」を実行
	//resolve("Process Success.");

	//Failure
	//処理に失敗した時は「reject」を実行
	//reject(new Error("Error."));
});

process.then(
	(value) => {
		console.log(value); // Success!
	},
	(error) => {
		console.error(error); // Error!
	},
);

問題17の解答

function roundDecimal(num) {
	return Math.round(num * 100) / 100;
}

「Math.roundメソッド」を使って、数値を「小数点以下第二位」で「四捨五入」しています。

具体的には、「引数」の数値に100を掛けてから「Math.roundメソッド」で「四捨五入」し、再度「100」で割ることで、「小数点以下第二位」までの数値に変換しています。

問題18の解答

「アロー関数」は、通常の関数と異なり、「function」キーワードの代わりに「矢印(アロー)」を使用して定義されます。

「アロー関数」は、暗黙的に「return文」を含むため、明示的に「return文」を書く必要はありません。

const sum = (a, b) => a + b;
console.log(sum(24, 38));

問題19の解答

function isPositive(num) {
	return num > 0 ? true : false;
}

この関数は、引数として渡された数値が正の数であれば「true」を、そうでなければ「false」を返します。

たとえば、

isPositive(-18)

を呼び出すと、「false」が返されます。

問題20の解答

function getSumNumbers(num1, num2) {
	return num1 + num2;
}

この関数は、引数として渡された2つの数値を足し合わせて、その結果を返します。

たとえば

sumNgetSumNumbersumbers(5, 7)

を呼び出すと、「12」が返されます

→(前へ)「JavaScript(関数)」の問題

→(次へ)「JavaScript(オブジェクト)」の問題

HOMEへ