You need to enable JavaScript to run this app. JavaScript:实现数字数组提取正数的现有代码排错与修改
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript:实现数字数组提取正数的现有代码排错与修改

原代码存在的问题
  • for循环语法错误:循环行尾误加了分号,导致循环绑定空语句为循环体,后续处理数组的花括号块完全脱离循环逻辑。循环空跑结束后,计数器i的值等于数组长度,此时取数组元素只会拿到undefined,最终返回的正数数组永远为空。
  • 打印方法不符合使用场景:代码末尾使用的print(positive)实际等价于调用浏览器内置的window.print(),作用是弹出系统打印对话框打印当前页面,既不会接收传入的参数,也达不到把数组内容输出调试的预期效果。
  • 可读性隐患:数组分割的部分使用了反人类的模板标签写法(all.split`,`.map(...)),虽然语法上能跑,但逻辑晦涩,后续维护成本极高。
  • 隐式全局变量:开头的all变量没有用关键字声明,非严格模式下会挂载到全局window对象,容易造成命名冲突。
基于原有代码的修改方案

直接对原有错误点做调整,不修改整体实现逻辑:

// 为all变量补充var声明,消除全局污染
var all = prompt("Give me an array of numbers seperated by ','");

// 替换可读性极差的模板标签写法为常规split调用
var splitted = all.split(',').map(x=>+x);
function returner(splitted){
    var positive = [];
    // 删除for循环行尾多余的分号,让数组处理逻辑正常进入循环体
    for(var i = 0; i < splitted.length; i++){
        var el = splitted[i];
        if (el >= 0){
            positive.push(el);
        }
    }
    return positive;
}

var positive = returner(splitted);
// 替换为浏览器兼容的调试打印方法
console.log(positive);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 16:45:04