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

JavaScript中使用Array.map提取质数数组末位值时异常求助

用Array.map()生成质数最后一位数组的正确姿势

为什么你的代码会出问题?

  • Array.map()的核心逻辑是遍历原数组,把回调函数的返回值收集起来生成新数组,你最后赋值给lastDig的就是这个新数组。
  • 第一次用console.log(value % 10)时,你看到的输出是回调里打印的内容,但console.log()本身返回undefined,所以实际lastDig是一个全为undefined的数组,只是你没注意到这点。
  • 换成lastDig.push(value % 10)后,push()方法的返回值是当前数组的长度。你一边往lastDig里push元素,一边又把map返回的「每次push后的长度」重新赋值给lastDig,最后lastDig就变成了[1,2,3,...25]——这是每次push操作返回的数组长度,不是你要的最后一位数字。

正确实现方式

直接利用map()的返回值特性,在回调里返回质数的最后一位即可:

// 假设primes是你的质数数组
const lastDig = primes.map(value => value % 10);

这样lastDig就是由所有质数最后一位组成的新数组,完全不需要额外创建空数组再手动push。

补充:如果想用push怎么办?

如果非要用push来实现,应该用Array.forEach()(专门用来遍历执行操作,不返回新数组),而不是map():

const lastDig = [];
primes.forEach(value => {
  lastDig.push(value % 10);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:05:21