[解決済み] ジャバスクリプト 配列の値を複数の変数に代入する?[重複している]
質問内容
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の表通り、うまくいきました)でテストしました。
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] Javascriptで動的に命名されたメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] Angularjs - 現在の日付を表示する
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] Javascript 空の配列の削減
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] モデルフェッチ時に1をtrueに、0をfalseに変換する方法
-
[解決済み] 文字列とラベルのローカライズとグローバリゼーションのベストプラクティス【終了しました
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?