カクカクしかじか

技術的なアレコレ

JavaScriptで指定したkey名にリネームした形でオブジェクトから値を取り出す方法

状況

user というオブジェクトをAPIの結果から取得したいが、後続処理でその変数名を使いたいので、user という値を tmpUser というような別の名前でAPIの結果から取り出したい

結論

const { 本来のオブジェクト名: 変更後のオブジェクト名 } = object; の形で値を受け取ることで可能

const UserFormKeys = [
  "name",
  "email",
  "password",
] as const;


// APIの戻り値のオブジェクトに存在するのは user だが、tmpUser で受け取ることが出来る
const { user: tmpUser } = await fetchUsers();

// 加工する処理
const user = UserFormKeys.reduce((obj, key) => {
    return {
      ...obj,
      [key]: (tmpUser && tmpUser[key]) || "",
    };
}, {} as UserForm);

return {
  user
};