1. ホーム
  2. javascript

[解決済み] ジャバスクリプト 配列の値を複数の変数に代入する?[重複している]

2023-01-31 01:51:24

質問内容

var a,b,c;
var arr = [1,2,3];
[a,b,c] = arr;

このコードはFirefoxで完璧に動作し、a=1, b=2, c=3という結果が得られます。

しかし、それはChromeで動作しません。これは Chrome のバグなのでしょうか、それとも

は有効なjavascriptコードではないのでしょうか?(私はjavascriptのリファレンスでそれを見つけることができませんでした)

どのように私はそれを損なうことなく、Chromeに適したこのコードを修正することができますか?

(私はa = arr[0]; b = arr[1]...またはarr.shift()と同じことをずっと書くのはあまり好きではありません)



追伸:これはあくまでサンプルコードであり、実際のコードでは

配列はコード外のどこかから取得しています。

どのように解決するのですか?

これは、JavaScript 1.7 の新機能である 代入の構造化解除 :

デストラクチャリング代入は、配列やオブジェクトのリテラルの構築を反映した構文を使って、配列やオブジェクトからデータを抽出することを可能にします。

オブジェクトと配列のリテラル式は、データのアドホックなパッケージを簡単に作成する方法を提供します。一度これらのデータパッケージを作成すれば、どのようにでも使用することができます。関数からそれらを返すことさえできます。

構造体解除代入でできる特に便利なことの1つは、1つの文で構造体全体を読み込むことですが、この後の例でいっぱいのセクションで示すように、構造体解除でできる面白いことはたくさんあります。

例えば、値を交換するために、デストラクチャリング代入を使用することができます。

var a = 1;
var b = 3;
[a, b] = [b, a];

<ブロッククオート

この機能は、PerlやPythonなどの言語に存在する機能に似ています。

残念ながら このバージョンの表 によると、JavaScript 1.7 は Chrome には実装されていないようです。しかし、それはそこにあるはずです。

  • FireFox 2.0 以降
  • IE 9
  • オペラ 11.50

この jsfiddle で試してみてください。 http://jsfiddle.net/uBReg/

Chrome(失敗)、IE 8(失敗)、FireFox 5(wikiの表通り、うまくいきました)でテストしました。