【JavaScript】配列内で「値とインデックスが一致する」最初の数値を返す方法
問題
数値の配列を受け取るJavaScript関数を作成する必要があります。この関数は、配列の中で「要素の値」と「0から始まるインデックス」が一致している最初の数値を見つけて返します。なお、そのような数値が配列内に少なくとも1つは存在するものとします。
コード例
以下のコードでは、forループを使って配列を先頭から順番に走査し、各要素の値がそのインデックスと一致した時点で、その値を即座に返しています。
const arr = [9, 2, 1, 3, 6, 5];
const findFirstSimilar = (arr = []) => {
for(let i = 0; i < arr.length; i++){
const el = arr[i];
if(el === i){
return i;
};
};
};
console.log(findFirstSimilar(arr));出力結果
上記のコードを実行すると、コンソールには次のように出力されます。
3
処理の流れの解説
この例で使用している配列は [9, 2, 1, 3, 6, 5] です。各要素とインデックスを比較してみましょう。
- インデックス
0→ 値は9(不一致) - インデックス
1→ 値は2(不一致) - インデックス
2→ 値は1(不一致) - インデックス
3→ 値は3(一致!)
このように、インデックス 3 の位置で初めて値とインデックスが一致するため、関数は 3 を返します。ループの途中で条件が満たされた時点で return することで、それ以降の不要な走査を省き、効率的に処理できる点がポイントです。
-
JavaScriptで昇順配列の中から並び順を壊している唯一の要素を見つける方法
この記事では、昇順(増加順)にソートされた数値の配列の中に、ただひとつだけ並び順を乱している要素がある場合に、その要素を特定して返すJavaScript関数の実装方法を解説します。 問題の定義 扱う配列は基本的に昇順でソートされていますが、その中の要素がひとつだけ順序から外れています。関数の目的は、その「異常な要素」を見つけ出して返すことです。 たとえば、次のような配列を考えます。 const arr = [1, 2, 3, 4, 17, 5, 6, 7, 8]; この配列から「17」を取り除けば残りは完全な昇順になるため、求める答えは「17」です。 解決のアプローチ 昇順の配列では、隣り合う
-
JavaScriptの配列から奇偶が異なる唯一の要素を返す方法
問題の概要整数の配列 arr を第1引数(かつ唯一の引数)として受け取るJavaScript関数を作成します。この配列には、「すべて偶数+奇数が1個だけ」または「すべて奇数+偶数が1個だけ」という特徴があります。関数の役割は、その中で唯一ほかと性質が異なる要素を見つけ出し、それを返すことです。たとえば、次のような入力が与えられた場合を考えてみましょう。入力const arr = [5, 9, 7, 11, 34, 23, 77];出力const output = 34;出力の解説この配列はほぼすべて奇数で構成されていますが、34 だけが偶数です。したがって、返すべき値は 34 となります。実装