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];