JavaScriptで合計がターゲット値になるペアの2番目の数値を削除する方法
問題
数値の配列とターゲットとなる合計値を受け取り、配列内で隣接する2つの数値の合計がターゲット値と一致する場合、そのペアの2番目の数値を配列からすべて削除するJavaScript関数を作成する必要があります。
コード例
以下がその実装例です −
const arr = [1, 2, 3, 4, 5];
const target = 3;
const removeSecond = (arr = [], target = 1) => {
const res = [arr[0]];
for(i = 1; i < arr.length; i++){
if(arr[i] + res[res.length-1] !== target){
res.push(arr[i]);
};
};
return res;
};
console.log(removeSecond(arr, target));出力
コンソールには以下のように出力されます −
[ 1, 3, 4, 5 ]
コードの解説
このアルゴリズムの仕組みは以下のとおりです。
- まず、配列の最初の要素を結果配列に格納します。
- 次に、2番目以降の各要素について、その要素と結果配列の最後の要素の合計がターゲット値と一致するかどうかを判定します。
- 一致しない場合はその要素を結果配列に追加し、一致する場合(つまり合計がターゲット値になるペアの2番目の数値である場合)はスキップして削除します。
この例では、配列 [1, 2, 3, 4, 5] に対してターゲット値 3 を適用すると、隣接するペア (1, 2) の合計が 3 になるため、ペアの2番目の数値である 2 が削除されます。その結果、[1, 3, 4, 5] が出力されます。
-
JavaScriptのAtomicsとは?アトミック操作とadd()メソッドの使い方
Atomics(アトミックス)とはAtomicsは、JavaScriptにおいてアトミック操作(不可分操作)を静的メソッドとして提供する組み込みオブジェクトです。Mathオブジェクトのメソッドと同様に、Atomicsのメソッドやプロパティはすべて静的に提供されます。主にSharedArrayBufferオブジェクトと組み合わせて使用され、複数スレッド間での安全なデータ共有を実現します。アトミック操作はAtomicsモジュール上に実装されています。他のグローバルオブジェクトとは異なり、Atomicsはコンストラクタではありません。そのため、new演算子を使ってインスタンス化したり、関数として直接
-
JavaScriptのnew.targetメタプロパティとは?使い方をわかりやすく解説
JavaScriptのnew.targetとはnew.targetは、関数やコンストラクタが実行時にnewキーワードを使って呼び出されたかどうかを判定できるメタプロパティです。通常、関数をnewをつけずに呼び出すと、コンストラクタとして意図された関数でも単なる通常の関数として実行されてしまい、グローバルオブジェクトにプロパティが設定されるなどの予期しない動作を引き起こす可能性があります。new.targetを利用することで、このような誤用を検出し、エラーとして通知することができます。new演算子とともに呼び出された場合、new.targetは呼び出されたコンストラクタ自身への参照を返します。一