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

如何获取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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:03:23