JavaScript で、例えば以下のようなオブジェクトがあったとして、
const obj = { a: false, b: undefined, c: 0, d: "", };
value が undefined
なキー、つまりは今回の場合は b
を除いた、以下のようなオブジェクトが欲しいケースがある。
const obj = { a: false, c: 0, d: "", };
ので、これを作る方法。
インターネットで調べると delete
を使うケースがあるんですが、消すというか、同じのを作って消すのは違うくない?ということで、 reduce
を使ったパターンをご紹介。
const createNewObjWithoutUndefined = (originalObj: Record<string, unknown>) => { return Object.keys(originalObj).reduce((obj, key) => { if (originalObj[key] === undefined) return obj; obj[key] = originalObj[key]; return obj; }, {}); }; const newObj = createNewObjWithoutUndefined(obj);
こんな感じで、新しいオブジェクトが生成される。
ということで小ネタでした。