なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

JavaScript で value が undefined な key を取り除いたオブジェクトがほしい

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

こんな感じで、新しいオブジェクトが生成される。
ということで小ネタでした。