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

JavaScript实现:将数组末尾元素替换为正整数计数

JavaScript数组替换需求实现方案

需求说明

将数组的最后一个元素替换为该数组中正整数的数量,输出修改后的数组。例如输入[-1,-5,-5,10],输出应为[-1,-5,-5,1](仅10是正整数)。

你的代码问题分析

第一段代码问题

  • positiveNum初始化为null,null++会得到NaN,统计逻辑完全失效,应该初始化为0
  • 循环中仅修改了临时变量lastElementValue,根本没有修改原数组的最后一个元素
  • let lastElement = arr[arr.length - 1]是取原数组最后一个元素的值副本,修改这个变量不会影响原数组

第二段代码问题

  • 逻辑完全搞反:你在统计负数的数量(arr[i]<0时positiveNum++),而需求是统计正整数
  • 同样positiveNum初始化为null,自增会产生NaN
  • 最后一直在操作numList,完全偏离了“修改原数组最后一个元素”的核心需求

正确实现方案

基础循环版(最贴近你的思路)

var arr = [-1,-5,-5,10];
// 初始化统计变量为0,而不是null
var positiveNum = 0;

// 遍历数组统计正整数数量
for (let i = 0; i < arr.length; i++) {
    if (arr[i] > 0) {
        positiveNum++;
    }
}

// 直接修改原数组的最后一个元素
arr[arr.length - 1] = positiveNum;

console.log(arr); // 输出: [-1,-5,-5,1]

简洁数组方法版(更符合现代JS风格)

利用filter方法筛选正整数,直接获取数量后替换最后一位:

var arr = [-1,-5,-5,10];
// 筛选所有正整数,获取长度就是数量
const positiveCount = arr.filter(num => num > 0).length;
// 替换最后一个元素
arr[arr.length - 1] = positiveCount;

console.log(arr); // 输出: [-1,-5,-5,1]

如果不想修改原数组,可以创建副本后操作:

var arr = [-1,-5,-5,10];
const positiveCount = arr.filter(num => num > 0).length;
// 扩展运算符创建副本,替换最后一位
const newArr = [...arr.slice(0, -1), positiveCount];

console.log(newArr); // 输出: [-1,-5,-5,1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:10:25