JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで配列の全要素を負の値に変換する方法

例として、次のような配列があるとします。

const arr = [7, 2, 3, 4, 5, 7, 8, 12, -12, 43, 6];

この配列を受け取り、すべての要素を対応する負の値に変換した配列を返す関数を作成します(たとえば 4 を -4、6 を -6 に変換します)。

ただし、要素がすでに負の値である場合は、その値はそのまま変更せずに残します。それでは、この関数のコードを見ていきましょう。

サンプルコード

const arr = [7, 2, 3, 4, 5, 7, 8, 12, -12, 43, 6];

const changeToNegative = (arr) => {
    return arr.reduce((acc, val) => {
        const negative = val < 0 ? val : val * -1;
        return acc.concat(negative);
    }, []);
};

console.log(changeToNegative(arr));

コードの解説

ここでは Array.prototype.reduce() メソッドを使用しています。初期値として空の配列を渡し、各要素に対して以下の処理を行います。

  • 三項演算子を使って、現在の値が 0 未満かどうかを判定します。
  • 値が正の場合は、-1 を掛けて負の値に変換します。
  • すでに負の値(上の例では -12)であれば、そのままの値を保持します。
  • 結果を acc.concat() で累積配列に追加していきます。

出力結果

コンソールには次のように出力されます。

[
    -7, -2, -3, -4, -5,
    -7, -8, -12, -12, -43,
    -6
]

map() を使ったより簡潔な書き方

単純に新しい配列を作りたいだけであれば、reduce() よりも map() を使った方がコードがシンプルになり、可読性も向上します。

const changeToNegative = (arr) => arr.map(val => -Math.abs(val));

console.log(changeToNegative([7, 2, -12, 43])); // [-7, -2, -12, -43]

-Math.abs(val) は「絶対値にマイナスを付ける」という意味になるため、元の符号に関係なく必ず負の値に変換できます。また、reduce() と concat() を組み合わせた場合と異なり、各ステップで中間配列を生成しないため、パフォーマンス面でも有利です。実務では後者の map() 方式が推奨されます。

  1. JavaScriptで配列を空にする方法まとめ【3つの手法と使い分けのポイント】

    JavaScriptで配列を空にする(初期化する)方法は複数あります。それぞれの手法には特徴や注意点があり、状況に応じて適切に使い分けることが重要です。この記事では、代表的な3つの方法と、それぞれのメリット・デメリットを詳しく解説します。まず、以下のような配列があると仮定します。let arr = [1, test, {}, 123.43];方法1:新しい空の配列で置き換えるarr = [];変数arrに新しい空の配列を再代入する方法です。最もシンプルかつ高速な手法として知られています。ただし注意点として、元の配列への参照がプログラムの他の場所に存在する場合、それらの参照は自動的に更新されませ

  2. JavaScriptの基本配列メソッド解説!push・pop・shift・unshift・spliceの使い方を実例付きで紹介

    JavaScriptには、配列を操作するための便利な組み込みメソッドが数多く用意されています。その中でも特によく使われるのが、要素の追加や削除を行う以下の5つの基本メソッドです。 JavaScriptの主要な配列メソッド一覧 メソッド説明 Array.push()配列の末尾に要素を追加します。 Array.pop()配列の末尾から要素を取り除きます。 Array.unshift()配列の先頭に要素を追加します。 Array.shift()配列の先頭から要素を取り除きます。 Array.splice()配列内の任意の位置で要素の追加・削除を行います。 これらのメソッドは、配列の