如何提取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 }
逻辑说明:
Object.entries(d)将原对象转换为键值对数组filter筛选出所有值为null的键值对Object.fromEntries将筛选后的键值对数组重新转换为对象
内容的提问来源于stack exchange,提问作者knot22
相关产品推荐
相关产品推荐

