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

Javascript問題集(配列)解答

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

問題1の解答

function sortAscending(numbers) {
	return numbers.sort((a, b) => a - b);
}

「Array.prototype.sortメソッド」は「比較関数」を「引数」に取ります。

この「比較関数」は2つの「引数」を受け取り、1つ目の「引数」が2つ目の「引数」より小さい場合は「負の数」、大きい場合は「正の数」、等しい場合は「0」を返します。

「a - b」を返すことで「numbers」を「昇順」にソートしています。

問題2の解答

function shuffleArray(arr) {
	for (let i = arr.length - 1; i > 0; i--) {
		let j = Math.floor(Math.random() * (i + 1));
		[arr[i], arr[j]] = [arr[j], arr[i]];
	}
	return arr;
}

「for」ループを使用して、配列の最後から1つずつループし、「ランダムに選択した要素」と交換することで、配列をランダムに並び替えます。

問題3の解答

console.log(area.length);

「length」プロパティによって「配列の長さ(要素数)」を取得することができます。

問題4の解答

function averageArray(data) {
	const sum = data.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
	return sum / data.length;
}

「sumArray関数」を使用して、「data」に含まれる数値の「合計値」を求めます。

その後、配列の長さである「data.length」で割ることで「平均値」を求めます。

問題5の解答

function reverseAndRemoveLast(data) {
	data.pop();
	return data.reverse();
}

「Array.prototype.popメソッド」を使用して「data」の最後の要素を削除し、「Array.prototype.reverseメソッド」を使用して残りの要素を「逆順」にソートしています。

問題6の解答

console.log(fruits[1]);

インデックスの「1」を指定すると「2番目の要素」を取得することが出来ます。

問題7の解答

Array.from(new Set([1, 2, 3, 2, 4, 5, 4, 6, 7, 1]));

まず、「Setオブジェクト」を作成して、配列を渡します。

「Setオブジェクト」は、「重複した要素」を持たない「一意の値の集合」を持つことができます。

配列を「Setオブジェクト」に渡すことで、「重複した要素」が自動的に削除されます。

次に、「Array.fromメソッド」を使って、「Setオブジェクト」を配列に変換します。

「Setオブジェクト」から「配列」に変換することで、「重複した要素」が削除された「新しい配列」を得ることができます。

問題8の解答

function sumArray(data) {
	let sum = 0;
	for (let i = 0; i < data.length; i++) {
		sum += Number(data[i]);
	}
	return sum;
}

「for」ループを使用して「配列の要素」を取得し、「Number関数」を使用して各要素を「数値」に変換します。

「変換した数値」を加算して、最終的な「合計値」を計算します。

問題9の解答

function minArray(numbers) {
	return Math.min(...numbers);
}

「スプレッド演算子」 を使用して、「numbersの要素」を「Math.minメソッド」に渡します。

「Math.minメソッド」は「引数」として与えられた「数値」のうち、「最小の数値」を返します。

問題10の解答

greetings.splice(1, 1);
console.log(greetings);

「spliceメソッド」を使って、指定した位置から要素を削除します。

上記の例では、「配列の2番目の要素(0から数えて2)」から「1つの要素」を削除することを指定しています。

問題11の解答

let frequencies = {};
let mostFrequentElement;
let highestFrequency = 0;

for (let i = 0; i < alphabet.length; i++) {
	if (frequencies[alphabet[i]]) {
		frequencies[alphabet[i]]++;
	} else {
		frequencies[alphabet[i]] = 1;
	}
}

for (let element in frequencies) {
	if (frequencies[element] > highestFrequency) {
		mostFrequentElement = element;
		highestFrequency = frequencies[element];
	}
}

console.log(mostFrequentElement);

「出現回数」を計数するためにオブジェクトを使用します。

「最も頻繁に現れる要素」を見つけるために、「最大出現回数」と対応する要素を変数に保存します。

最後に、「最も頻繁に現れる要素」を表示します。

問題12の解答

function toStringArray(data) {
	return data.map((element) => element.toString());
}

「Array.prototype.mapメソッド」を使用して、「引数 data」の全ての要素を「文字列」に変換します。

問題13の解答

function splitArray(dataArray) {
	let middleIndex = Math.floor(dataArray.length / 2);
	let firstHalf = dataArray.slice(0, middleIndex);
	let secondHalf = dataArray.slice(middleIndex);

	return [firstHalf, secondHalf];
}

「最初の半分の要素」を取得するために、「sliceメソッド」の第一引数に「0」、第二引数に「中央インデックス」を指定します。

「後半分の要素」を取得するために、「sliceメソッド」の第一引数に「中央インデックス」、第二引数に「配列の長さ」を指定します。

問題14の解答

console.log(fruits.push('peach'));

「pushメソッド」を利用して配列の最後尾に「peach」を追加します。

問題15の解答

let numbersResult = numbers.map(function (num) {
	return num * 10;
});

console.log(numbersResult);

「mapメソッド」を使って、「配列の各要素」に指定した処理を適用して、「新しい配列」を作成することができます。

この例では、「*」演算子を使って、各要素に「10」を掛けた値を返すように指定しています。

問題16の解答

function calculateSumOfOthers(dataArray) {
	let totalSum = dataArray.reduce((a, b) => a + b);
	return dataArray.map((item) => totalSum - item);
}

これを実現するために、まず配列内の「すべての要素の合計」を計算し、その合計から「各要素」を引いた結果を「新しい配列」にマップします。

問題17の解答

function sumArrayIndexes(dataArray) {
	let sum = 0;
	for (let i = 0; i < dataArray.length; i++) {
		sum += i + dataArray[i];
	}
	return sum;
}

「for」ループを使用して配列の「各要素」とその「インデックス」を取得し、それらを加算して「合計値」を計算します。

要素の値は「dataArray[i]」、インデックスは「i」で取得できます。

問題18の解答

let evenNumber = numbers.filter(function (num) {
	return num % 2 === 0;
});

console.log(evenNumber);

「filterメソッド」を使って、「指定した条件に合致する要素」だけを取り出すことができます。

「%」演算子を使って、要素を「2」で割った余りが「0」である場合、つまり「偶数」である場合に「true」を返すように指定しています。

問題19の解答

function replaceMaxWithSecondMax(arr) {
	let max = Math.max(...arr);
	let secondMax = arr.filter((item) => item !== max)
		.reduce((a, b) => Math.max(a, b));

	let index = arr.indexOf(max);
	arr[index] = secondMax;

	return arr;
}

let replacedArr = replaceMaxWithSecondMax(arr);
console.log(replacedArr);

「最大値」と「2番目」に「大きな値」を見つけるために、「Math.maxメソッド」と「filterメソッド」を使用します。

「最大値」を置き換えるために、「indexOfメソッド」を使用して、「最大値」が見つかった「インデックス」を取得します。

問題20の解答

let numberArray = [1, 2, 3, 4, 5];

→(次へ)「JavaScript(配列)」の問題

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

HOMEへ