便利だけど名前がふわっとしているので雑にまとめる
今回取り上げるもの
JavaScriptにおいて Destructuring assignment
と呼ばれるもの、日本語では分割代入と訳したり、ままカタカナ語でデストラクチャリングという。大きくこの機能には「配列を対象にしたもの」「オブジェクトを対象にしたもの」が存在するのでその2つのくくりで説明をする。
配列
配列を分割して代入をすることができる
const baseArray = [1,2,3]
const [frist,sencond,third] = baseArray
また、部分的に取り出したりすることもできる
const baseArray = [1,2,3]
const [ichi] = baseArray
const [x,,z] = baseArray
またスプレッド構文を用いた残余引数(RestParameter)を指定すると広域に切り取りができる
const longArray = [10,20,30,40,50]
const [ichi,...nokori] = longArray
console.log(ichi)
console.log(nokori)
ただし残余引数のあとに別の変数を設定を指定していれることはできない
const [first,...aida,last] = longArray
引数への活用
関数の引数に使うこともできる
function loggingfirst([first, ...nokori]){
console.log(`logging ${first}`)
}
let array = [2,4,8,16]
loggingfirst(array)
オブジェクト
オブジェクトは対応するキーのものがあれば入る形になる
let source = { age: 20, name: "Tanaka", country: "Japan"}
let {name , age} = source
console.log(name)
console.log(age)
もちろん対応するオブジェクトがない場合は入らない
let source = { age: 20, name: "Tanaka", country: "Japan"}
let {test , age} = source
console.log(test)
console.log(age)
また初期値設定もできる
let source = { age: 20, name: "Tanaka", country: "Japan"}
let {test = "test text" , age = 30} = source
console.log(test)
console.log(age)
キー名とは異なる変数への割当
以下のように書くことでキー名と別の変数に割り当てることができる
let source = { age: 20, name: "Tanaka", country: "Japan"}
let {test: newTest = "test string" , age: newAge , todouhuken: region} = source
console.log(newAge)
console.log(newTest)
console.log(region)
この構文はコロンを挟んで右側に要素を入れる形なので気をつける。(だいたい他の構文はコロンの左側に右側の値を入れる)
引数への活用
配列同様に引数にも活用できる
function loggingName({name}){
console.log(`logging ${name}`)
}
let source = { age: 20, name: "Tanaka", country: "Japan"}
loggingName(source)
参考リンク