如何实现数组值与外部值相加?如何编写整数胜者判定函数?
技术问题一:数组元素与外部值相加的实现方法
- 方法一:使用
Array.map()(推荐,简洁高效)
遍历数组每个元素,返回与外部值相加后的新数组:const nums = [1, 2, 3]; const addValue = 5; const newNums = nums.map(num => num + addValue); // 输出结果:[6, 7, 8] - 方法二:使用
for循环
手动遍历数组,将计算结果存入新数组:const nums = [1, 2, 3]; const addValue = 5; const newNums = []; for (let i = 0; i < nums.length; i++) { newNums.push(nums[i] + addValue); } // 输出结果:[6, 7, 8] - 方法三:使用
Array.forEach()修改原数组
直接遍历修改原数组的元素值:const nums = [1, 2, 3]; const addValue = 5; nums.forEach((num, index) => { nums[index] = num + addValue; }); // 原数组变为:[6, 7, 8]
技术问题二:修正胜者判定函数
首先说明:需求描述与给出的期望输出存在矛盾——若仅接收两个单个整数,a=5、b=3按规则应输出[1, 0]而非[1, 1]。结合原代码的循环逻辑,推测实际需求为接收两个长度为3的数组,逐位比较并统计双方获胜次数(a对应位置元素大于b则a胜1次,反之b胜1次,相等无胜负)。
原代码的问题
result数组未初始化元素,直接执行result[0] +=1会得到NaN- 循环条件固定为
i<3,通用性差 - 未明确处理元素相等的情况(逻辑可优化)
修正后的代码(数组输入场景)
function winner(a, b) { // 初始化结果数组,避免NaN let result = [0, 0]; // 遍历数组对应位置(假设a、b长度一致) for (let i = 0; i < a.length; i++){ if (a[i] > b[i]){ result[0]++; } else if (a[i] < b[i]){ result[1]++; } // 元素相等时不修改结果 } return result; }
测试验证
- 输入
winner([2], [3])→ 返回[0, 1],符合期望 - 输入
winner([5, 3], [3, 5])→ 返回[1, 1],符合期望
若需求为单个整数输入
若确实是接收两个单个整数,修正后的代码如下:
function winner(a, b) { let result = [0, 0]; if (a > b) { result[0]++; } else if (a < b) { result[1]++; } return result; }
测试:
winner(2, 3)→[0, 1]winner(5, 3)→[1, 0]
内容的提问来源于stack exchange,提问作者Mu'adhim
相关产品推荐
相关产品推荐

