如何在JavaScript中获取对象非空属性并完成指定属性名转换
JavaScript对象过滤+键名转换实现方案
核心思路
- 先遍历原对象所有属性,过滤掉属性值为
null的条目 - 提前定义键名映射规则,对保留的属性做键名替换,不在映射规则内的属性直接保留原键名即可
代码实现
首先定义键名转换映射表:
const keyMap = { area: 'location', name: 'fullName', schedule: 'date' }
ES6+ 简洁实现(推荐)
用Object.entries+filter+map+Object.fromEntries组合实现,逻辑清晰易读:
function processTargetObject(originObj) { return Object.fromEntries( Object.entries(originObj) // 过滤值为null的属性 .filter(([key, value]) => value !== null) // 替换匹配的键名 .map(([key, value]) => [keyMap[key] || key, value]) ) }
兼容低版本实现
如果运行环境不支持Object.fromEntries,可以用普通遍历写法:
function processTargetObject(originObj) { const result = {} for (let key in originObj) { // 排除原型链属性 + 过滤null值 if (originObj.hasOwnProperty(key) && originObj[key] !== null) { const newKey = keyMap[key] || key result[newKey] = originObj[key] } } return result }
测试效果
用你提供的示例对象测试:
var sample = {code: null, area: "Tokyo", contact: null, name: "John Doe", schedule:"Aug 29, 2021"} console.log(processTargetObject(sample))
输出结果为:
{ location: "Tokyo", fullName: "John Doe", date: "Aug 29, 2021" }
内容的提问来源于stack exchange,提问作者thePeculiarCoder
相关产品推荐
相关产品推荐

