【JavaScript】配列内の要素が指定回数より多く繰り返されていないか検証する方法
JavaScriptで、次の2つの引数を受け取る関数を作成する必要があります。
- 配列(arr) ― リテラルを格納し、繰り返し要素が含まれている可能性がある配列。
- 数値(n) ― 要素の繰り返し回数の上限。
この関数は、配列内のどの要素も指定された上限回数(n回)より多く繰り返されていないかどうかを検証します。もし1つでも要素が上限を超えて繰り返されていれば false を返し、すべての要素が上限以内であれば true を返します。
実装のアプローチ
まず reduce() メソッドを使って、配列内の各要素の出現回数をオブジェクトとして集計します。次に Object.values() でカウント値だけを配列として取り出し、every() メソッドですべてのカウントが上限未満であるかを判定します。この手法により、簡潔かつ効率的にチェックを行うことができます。
サンプルコード
const arr = [4, 6, 7, 4, 2, 5, 7, 7, 4, 4, 3];
const validateElements = (arr, n) => {
const counts = arr.reduce((acc, el) => {
acc[el] = (acc[el] + 1) || 1;
return acc;
}, {});
return Object.values(counts).every(c => {
return c < n;
});
};
console.log(validateElements(arr, 3));
console.log(validateElements(arr, 4));
console.log(validateElements(arr, 6));
出力
コンソールには次のように表示されます。
false
false
true
コードの解説
上記の配列 arr では、「4」が4回、「7」が3回出現しています。
- n = 3 の場合: 「4」が4回、「7」が3回出現しており上限を超えているため
falseが返されます。 - n = 4 の場合: 「4」がちょうど4回出現しており「n回未満」という条件を満たさないため
falseが返されます。 - n = 6 の場合: すべての要素が6回未満しか出現していないため
trueが返されます。
このように、条件が「n回より多く」繰り返されているかどうかの判定になっている点に注意してください。厳密に「n回以下」まで許容したい場合は、比較演算子を c <= n に変更することで対応できます。
-
JavaScriptでIDを指定して要素を削除する方法
JavaScriptでIDを指定して要素を削除するIDを使ってHTML要素を削除するには、remove()メソッドを使用します。このメソッドは、対象のDOM要素をドキュメントから直接取り除くことができる、最もシンプルで直感的な方法です。コード例以下は実際のサンプルコードです。<!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8> <meta name=viewport content=width=device-width, in
-
JavaScriptで配列内の要素が指定回数を超える出現を削除する方法
問題 最初の引数として数値の配列、2番目の引数として整数を受け取るJavaScript関数を作成する必要があります。 この関数は、配列から余分な出現を削除し、処理後の配列内のどの要素も指定された回数(第2引数)より多く出現しないようにします。つまり、各要素の出現回数を上限値までに制限するのが目的です。 アプローチ この問題は、各要素の出現回数を記録するマップ(オブジェクト)を使うことで効率的に解決できます。手順は以下の通りです。 配列を走査し、各要素の出現回数をカウントします。ただし、カウントが指定された上限値に達したらそれ以上は増やしません。 カウント結果をもとに、各要素を許容回数だけ