You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用现代JavaScript按指定键提取对象字段并忽略undefined值

实现方案

可以使用 ES2019 引入的 Object.fromEntries 配合数组方法写出非常简洁的现代JS版本,不需要手动维护中间对象:

function denormalizeUserData(userData, ...fields) {
  return Object.fromEntries(
    fields
      // 把每个字段转为 [键, 值] 二元数组,符合 Object.fromEntries 的入参格式
      .map(key => [key, userData[key]])
      // 过滤掉值为 undefined 的项,不会误过滤 0、false、空字符串等合法假值
      .filter(([_, value]) => value !== undefined)
  )
}

测试效果

const userData = {
  avatar: undefined,
  name: "Raul",
  username: "raulito",
  celebrity: true
}

// 测试1
console.log(denormalizeUserData(userData, "avatar", "name")) 
// 输出:{ name: "Raul" }

// 测试2
console.log(denormalizeUserData(userData, "celebrity", "name", "avatar"))
// 输出:{ celebrity: true, name: "Raul" }

更精简的箭头函数写法

如果不需要函数内部的this绑定,还可以直接写成箭头函数:

const denormalizeUserData = (userData, ...fields) => 
  Object.fromEntries(
    fields.map(k => [k, userData[k]]).filter(([_, v]) => v !== undefined)
  )

内容的提问来源于stack exchange,提问作者Raul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:45:01