色々勘違いしてた終わり。
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}};