JavaScriptで配列内にちょうど2回出現する要素を抽出する方法
はじめに
本記事では、リテラル値(数値や文字列など)を含む配列を受け取り、その中から「ちょうど2回」出現している要素だけを取り出し、新しい配列として返すJavaScript関数の実装方法を解説します。
アプローチのポイント
実装は大きく2つのステップに分けられます。
- 指定した値が配列内に何回出現するかをカウントするヘルパー関数を用意する。
- 元の配列の各要素に対して出現回数をチェックし、回数が2回であれば結果配列へ追加する。
なお、同じ値がすでに結果配列に入っている場合は再度追加しないよう includes() による重複チェックを行うことで、出力の重複を防いでいます。
サンプルコード
実際のコードは以下の通りです。
const arr = [0, 1, 2, 2, 3, 3, 5];
// 指定した値が配列内に出現する回数を返すヘルパー関数
const findAppearances = (arr, num) => {
let count = 0;
for(let i = 0; i < arr.length; i++){
const el = arr[i];
if(num !== el){
continue;
};
count++;
};
return count;
};
// ちょうど2回出現する要素だけを抽出する関数
const pickAppearingTwice = (arr = []) => {
const res = [];
for(let i = 0; i < arr.length; i++){
const el = arr[i];
if(findAppearances(arr, el) === 2 && !res.includes(el)){
res.push(el);
};
};
return res;
};
console.log(pickAppearingTwice(arr));実行結果
上記のコードをコンソールで実行すると、以下のような出力が得られます。
[2, 3]
コードの解説
入力配列 [0, 1, 2, 2, 3, 3, 5] のうち、2 と 3 はそれぞれ2回出現していますが、0・1・5 は1回しか出現していません。そのため、条件を満たす [2, 3] が新しい配列として返されます。
計算量の面では、各要素ごとに配列全体を走査するため O(n²) の時間計算量となります。大規模な配列を扱う場合は、Map やオブジェクトを使って出現回数を先に集計しておくことで、O(n) まで効率化することも可能です。
-
JavaScriptで配列を出現頻度の昇順に並べ替える方法
問題数値の配列 arr を唯一の引数として受け取るJavaScript関数を作成する必要があります。配列 arr には重複した要素が含まれている可能性があります。この関数では、出現回数が少ない要素から順に配列を並べ替えます。つまり、出現頻度の低い要素を先頭に配置し、頻度の昇順に沿って残りの要素を並べていきます。なお、出現回数が同じ要素が複数存在する場合は、それらを値の昇順(小さい順)に配置する必要があります。入力例const arr = [5, 4, 5, 4, 2, 1, 12];出力例[1, 2, 12, 4, 4, 5, 5]出力の解説数値「1」「2」「12」はそれぞれ1回しか出現しない
-
C言語で配列内に複数回出現する重複要素を検出する方法
はじめに:配列とは 配列(Array)とは、同じデータ型の要素を格納するコンテナであり、使用する前にその長さ(サイズ)を定義しておく必要があります。また、同じ値は配列内のどの位置にでも、何度でも出現できます。この記事では、その性質を利用したプログラムとして、「配列の中で 2 回以上出現する要素を見つけ出して表示する」方法を解説します。 問題の定義 ある配列 arr[] が与えられたとき、その中で繰り返し出現している要素をすべて見つけ出し、画面に出力するプログラムを作成します。まず、具体例でイメージをつかみましょう。 実行例 入力: arr[] = {5, 11, 11, 2, 1, 4, 2}