JavaScript でスプレッド構文使ってオブジェクトから pick する
こういうのがある
const obj = { a: 1, b: 3, c: 5 };
ここから a, b だけを取り出した
{ a: 1, b: 3 }
を作りたい
結論
こうすれば良い
const picked = (({ a, b }) => ({ a, b }))(obj);
流れ
スプレッド構文*1使ってこんな感じで要素を取り出せる
const { a, b } = obj; console.log(a, b); // => 1 3
関数にして同じことやるとこんな感じ
const proc = ({ a, b }) => { console.log(a, b) }; proc(obj); // => 1 3
戻り値で受け取るとこんな感じ
const fn = ({ a, b }) => { return { a, b } }; const picked = fn(obj); console.log(picked); // => { a: 1, b: 3 }
なので省略して書くと
const picked = (({ a, b }) => { return { a, b } })(obj);
return も省略できる*2ので
const picked = (({ a, b }) => ({ a, b }))(obj);