【JavaScript】配列から指定した数値を削除し、残りの要素を左にシフトする方法
今回は、数値の配列を第1引数に、削除したい数値を第2引数に受け取るJavaScript関数を作成します。
この関数は、第2引数で指定された数値が配列内に存在する場合、その要素を取り除き、それより右側にあるすべての要素を1つずつ左へシフトする必要があります。唯一の条件は、slice() や splice() をはじめとする配列操作系の組み込みメソッドを使用してはいけないという点です。
また、同じ数値が配列内に複数存在する場合は、最初に出現したものだけを削除します。
処理内容の例
たとえば、入力配列が次のような場合を考えてみましょう。
const arr = [3, 5, 6, 3, 7, 8, 8, 6]; const num = 7;
このとき、数値「7」を削除すると、配列は次のようになります。
const output = [3, 5, 6, 3, 8, 8, 6];
実装コード
それでは、実際のコードを見てみましょう。
const arr = [3, 5, 6, 3, 7, 8, 8, 6];
const num = 7;
const removeElement = (arr = [], num) => {
let index = arr.indexOf(num);
if(index === -1){
return;
};
while(index + 1 < arr.length){
arr[index] = arr[index + 1];
arr[index + 1] = arr[index] - arr[index + 1];
arr[index] = arr[index] - arr[index + 1]; ++index;
};
arr.pop();
};
removeElement(arr, num);
console.log(arr);コードのポイント
indexOf()で削除したい数値のインデックス位置を取得します。配列内に存在しない場合(戻り値が -1)は、そのまま処理を終了します。whileループの中では、各要素に右隣の要素の値を代入しながら順番に左へ詰めていきます。これにより、削除対象以降の要素全体が1つずつ左にシフトされます。- 最後に
pop()で末尾に残った不要な要素を取り除くことで、配列の長さを1つ減らしています。
出力結果
コンソールには次のように出力されます。
[ 3, 5, 6, 3, 8, 8, 6 ]
-
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 となります。実装