如何获取JavaScript对象数组中各属性的首个非空非零值?
问题解决
你的代码错误点
- 箭头函数语法错误:参数部分应写成
el =>,而非el.age=>,正确的箭头函数参数需用括号包裹(单个参数可省略括号,但不能直接附加属性访问) - 数组对象中不存在
age属性,需替换为实际要查询的属性名(如name、id、department、DOB) Array.find()返回的是符合条件的整个对象,而非对应属性的值,需要额外提取属性值
通用解决方案
可以写一个通用函数,传入数组和目标属性名,按照需求返回首个非空值:
function getFirstNonEmptyValue(arr, propName) { // 找到第一个属性值不为 null 的元素 const targetItem = arr.find(item => item[propName] !== null); // 找到则返回对应属性值,否则返回 null return targetItem ? targetItem[propName] : null; }
测试示例
用你的数组测试各个属性:
var array=[ {"id": null,"name": 1251,"department": null,"DOB":null}, {"id": null,"name": null,"department": 48,"DOB":null}, {"id": 1421452,"name": null,"department": 0,"DOB":null}, {"id": null,"name": 1251,"department": null,"DOB":null} ]; // 获取name的首个非空值 console.log(getFirstNonEmptyValue(array, 'name')); // 输出 1251 // 获取department的首个非空值 console.log(getFirstNonEmptyValue(array, 'department')); // 输出 48 // 获取id的首个非空值 console.log(getFirstNonEmptyValue(array, 'id')); // 输出 1421452 // 获取DOB的首个非空值(全部为null) console.log(getFirstNonEmptyValue(array, 'DOB')); // 输出 null // 测试属性值为null和0混合的情况 const testArray = [{"num": null}, {"num": null}, {"num": 0}]; console.log(getFirstNonEmptyValue(testArray, 'num')); // 输出 0
这个函数完全匹配需求:
- 优先返回首个非
null的属性值(包含0) - 若所有属性值均为
null,则返回null
内容的提问来源于stack exchange,提问作者monica_s
相关产品推荐
相关产品推荐

