【8/27まで】Udemyの人気コースが今なら1,200円から!!

【JavaScript入門】分割代入

通常の書き方

分割代入を使わずに書くと以下のようになります。

js

let array = [10,20,30,40,50];
let a0 = array[0];
let a1 = array[1];
let a2 = array[2];
let a3 = array[3];
let a4 = array[4];

分割代入とは

分割代入とは、配列やオブジェクトを分解し、要素やプロパティ値を個々の変数に分解するための構文です。
分割代入を使うと、以下のように記述することができます。

js

let array = [10,20,30,40,50];
let[a0, a1, a2, a3, a4] = array;
console.log(a3);//40
console.log(a4);//50

実行結果

40
50

分解しない要素があっても良い

すべての要素を分解する必要はありません。以下のように先頭の3つだけ分解することもできます。

js

let array = [10,20,30,40,50];
let[a0, a1, a2] = array;
console.log(a1);//20
console.log(a2);//30

実行結果

20
30

スプレッド構文(...)を組み合わせる

スプレッド構文を用いることで個々の変数に分解されなかった残りの要素をまとめて配列にすることも出来ます。

js

let array = [10,20,30,40,50];
let[a0, a1, ...ohter] = array;

console.log(a1);//20
console.log(ohter);//[30, 40, 50]

実行結果

20
//[30, 40, 50]

オブジェクトの場合

オブジェクトの場合のルール
  • オブジェクトの場合は{}で括る。
  • 個々の変数名はプロパティ名になる。
  • そのため、変数の並び順とプロパティの並び順が違っていても問題なし。
  • プロパティが存在しなかった場合のデフォルト値を設定することが可能。
  • すべてを分解する必要はなく、分解しないプロパティがあっても良い。

js

let obj = {
    name:'tomato',
    price:100,
    group:'vegetable',
    county:'japan'
};
let {name, group, price, note='なし'} = obj;
console.log(name);
console.log(price);
console.log(group);
console.log(note);

実行結果

tomato
100
vegetable
なし

プロパティ名とは別の変数に分解する

プロパティ名と代入する変数名を別々にしたい場合は、以下のように記述します。

js

let obj = {
    name:'tomato',
    price:100,
    group:'vegetable',
    county:'japan',
    allergies:{al1:'gluten', al2:'egg'}
};

//プロパティ名を別名で指定する。
let {name:hensu1, price:hensu2, group:hensu3} = obj;
console.log(hensu1);//tomato
console.log(hensu2);//100
console.log(hensu3);//vegetable

実行結果

tomato
100
vegetable

入れ子のオブジェクトを分解する

js

let obj = {
    name:'tomato',
    price:100,
    group:'vegetable',
    county:'japan',
    allergies:{al1:'gluten', al2:'egg'}
};

let {name, price, group,allergies} = obj;
console.log(name);
console.log(price);
console.log(group);
console.log(allergies);//allergiesのすべてを取得
console.log(allergies.al1);//allergiesのal1のみ取得

実行結果

tomato
100
vegetable
{ al1: 'gluten', al2: 'egg' }
gluten

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です