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

JavaScriptで[1,2]+[3,4]が「1,23,4」になる理由を解説

JavaScriptの+演算子は、数値同士の加算、または文字列同士の連結に使用されます。しかし、配列を結合して新しい配列を作りたい場合には、concat()メソッドを使う必要があります。

配列の結合にはconcat()メソッドを使う

例えば、次のように2つの配列を結合できます。

[50, 70].concat([90, 100])

上記のコードを実行すると、以下のような結果が出力されます。

[50, 70, 90, 100]

[1,2]+[3,4]が「1,23,4」になる仕組み

では、なぜ[1,2] + [3,4]が「1,23,4」という文字列になってしまうのでしょうか。その理由は、+演算子は配列に対しては加算や結合を行わず、両方の配列を自動的に文字列へ変換して連結するためです。

処理の流れを見てみましょう。

[1,2] + [3,4]
// 配列がそれぞれ文字列に変換される
'1,2' + '3,4'
// 結果
"1,23,4"

このように、配列はtoString()メソッドによって「1,2」や「3,4」のようなカンマ区切りの文字列に変換され、その後+演算子によって文字列として連結されます。そのため、意図しない結果になってしまうのです。

正しく配列を結合する方法

配列を結合したい場合は、前述のとおりconcat()メソッドを使用しましょう。

[1,2].concat([3,4])
// 結果
[1,2,3,4]

concat()メソッドは元の配列を変更せず、新しい配列を返すため、安全に配列を結合できます。また、ES2015以降ではスプレッド構文を使って[...[1,2], ...[3,4]]のように書くことも可能です。

まとめ: +演算子で配列を足すと文字列化されて連結されてしまうため、配列の結合には必ずconcat()メソッド(またはスプレッド構文)を使いましょう。

  1. JavaScriptで2つのオブジェクトをマージする方法を解説

    JavaScriptでは、スプレッド構文(...)を使うことで、2つのオブジェクトを簡単に1つにマージ(結合)できます。各オブジェクトの前に「...」を付けて新しいオブジェクトリテラル内に展開するだけで、すべてのプロパティが統合されたオブジェクトが生成されます。以下に、2つのJavaScriptオブジェクトをマージするコードの例を示します。コード例<!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=dev

  2. JavaScriptで2つの二分探索木(BST)のノード値の合計が目標値に一致するか判定する方法

    問題 JavaScriptの関数を作成します。この関数は、第1引数として1つ目の二分探索木のルートroot1を、第2引数として2つ目の二分探索木のルートroot2を受け取り、さらに第3引数として整数targetを受け取ります。 この関数は、「1つ目の木の中のあるノード」と「2つ目の木の中のあるノード」の値を足し合わせた結果がtargetと一致するようなペアが存在する場合にのみtrueを返し、存在しない場合はfalseを返す必要があります。 たとえば、次のような入力が与えられたとします。 const target = 23; 2つのBSTの例 この場合の出力は次のようになります。 const