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

使用数组reduce方法提取年龄数组运行失败应如何修正?

问题原因分析
  • 语法错误:const是JavaScript关键字,大小写敏感,你代码里首字母大写的Const不符合语法规范,运行会直接抛出语法错误。
  • reduce回调返回值错误:数组push()方法的返回值是操作完成后数组的长度,而非修改后的数组本身。reduce要求每次回调执行结束后必须返回累计器acc用于下一轮迭代,你第一次执行回调后返回值为数字1,第二轮迭代时尝试对数字调用push()方法,就会抛出类型错误,自然无法得到预期的年龄数组。
修复方案

方案1:push后手动返回累计器(性能最优,不会生成额外中间数组)

const people = [ { name: 'siddiq', age: 20} , { name: 'anas', age: 19}]
const arr = people.reduce((acc, curr) => {
  acc.push(curr.age)
  return acc
}, [])

方案2:直接返回新数组(适合不可变数据场景)

const people = [ { name: 'siddiq', age: 20} , { name: 'anas', age: 19}]
// concat写法
const arr = people.reduce((acc, curr) => acc.concat(curr.age), [])
// 展开运算符写法
const arr2 = people.reduce((acc, curr) => [...acc, curr.age], [])

如果只是单纯提取对象数组的某个字段,使用Array.map()方法逻辑更直观,代码更简洁:

const arr = people.map(item => item.age)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:39:03