JavaScriptで、特定の条件を満たす場合にオブジェクトにプロパティを設定し、満たさない場合にはプロパティ自体を設定したくない場合、以前は次のように後からプロパティを追加するしかありませんでした。
const obj = {
name: 'Sato'
};
if(someCondition) {
obj.country = 'Japan';
}
ES2015からはスプレッド演算子を使って、次のようにまとめて書くことができます。
ややトリッキーですが、条件がtrueのときにオブジェクトを展開することで、外側のオブジェクトにプロパティを追加しています。
const obj = {
name: 'Sato',
...(someCondition && {country: 'Japan'})
};
配列の場合も同じようにスプレッド演算子を使うことで、特定の条件のときだけ要素を追加できます。
const arr = [
'America',
'China',
...(someCondition && ['Japan'])
];
if文で後から追加する方法と比べるとごちゃごちゃしていますが、やはりオブジェクトの初期化時にまとめてプロパティを定義できるのは便利です。
参考