JavaScript

あるオブジェクトから特定のプロパティだけ取り出す « JavaScript

色々勘違いしてた終わり。


lodash.pick(逆だけどlodash.omit)みたいなやつを使わずに。

// const obj = {a: 1, b: 2, c: 3};
Object.keys(obj)
  .reduce(
    (acc, key) => (
      ({}).hasOwnProperty.call(acc, key)
        ? {...acc, [key]: obj[key]}
        : acc
    ),
    {a: null, b: null}
  );

// => {a: 1, b: 2}

なんとなくdeepAssignな感じに改良。

// const obj = {a: {aa: 1, ab: 2}, b: {ba: 1, bb: 2}, c: {ca: 1, cb:2}};
Object.keys(obj)
  .reduce(
    (acc, key) => (
      ({}).hasOwnProperty.call(acc, key)
        ? {...acc, [key]: {...acc[key], ...obj[key]}}
        : {...acc, [key]: obj[key]}
    ),
    {a: {ac: 3}, b: {bc: 3}}
  );

// => {a: {aa: 1, ab: 2, ac: 3}, b: {ba: 1, bb: 2, bc: 3}, c: {ca: 1, cb:2}};