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

如何提取JS对象中值为null的键值对?代码问题修正与优化

提取对象中值为null的键值对

原代码问题分析

你当前代码的问题在于forEach回调里的三元表达式没有执行赋值操作:当v === null时,只是返回了nulls[k],并没有把null赋值给nulls[k],所以nulls始终是空对象。

修改后的基础实现

把回调逻辑改成明确的赋值操作即可:

const d = { pp: 1700, no: 2300, co: null, ng: 4550, zx: null };
const nulls = {};

Object.entries(d).forEach(([k, v]) => {
  if (v === null) {
    nulls[k] = v;
  }
});
console.log(nulls); // 输出: { co: null, zx: null }

如果一定要用三元表达式,需要调整为执行赋值的形式(可读性稍差):

Object.entries(d).forEach(([k, v]) => v === null ? (nulls[k] = v) : v);

更简洁的实现方式(使用filter)

可以结合Object.entries、filter和Object.fromEntries来实现一行代码搞定:

const d = { pp: 1700, no: 2300, co: null, ng: 4550, zx: null };
const nulls = Object.fromEntries(
  Object.entries(d).filter(([_, v]) => v === null)
);
console.log(nulls); // 输出: { co: null, zx: null }

逻辑说明:

  1. Object.entries(d)将原对象转换为键值对数组
  2. filter筛选出所有值为null的键值对
  3. Object.fromEntries将筛选后的键值对数组重新转换为对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:45:34