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
相关产品推荐
相关产品推荐

