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);