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

已排序数组去重后写入新数组时控制台返回空数组问题求助

问题排查及修复

导致返回空数组的核心原因

  • 调用函数时未传入有效非空数组:如果传入空数组[],函数内的循环不会执行,直接返回初始定义的空数组
  • 未正确接收函数返回值:代码中存储结果的j是函数内部的局部变量,外部作用域无法直接访问,必须用变量承接函数的返回值才能拿到去重结果。
    错误调用示例:
    let originArr = [1,1,2,2,3]
    removedIntegers(originArr)
    console.log(j) // 外部访问不到内部的j变量,如果你提前在全局定义了空的j变量,就会打印空数组
    
    正确调用示例:
    let originArr = [1,1,2,2,3]
    let uniqueArr = removedIntegers(originArr)
    console.log(uniqueArr)
    
  • 传入参数不是数组类型:如果传入数字、字符串、null等非数组值,调用sort方法时会抛出类型错误,若你的代码有捕获错误返回空的逻辑,也会得到空数组结果。

原有代码优化建议

你当前的去重逻辑本身不存在语法错误,针对你的使用场景可以做两处优化:

  • 你提到输入本身是已排序数组,不需要额外调用sort()方法,且JS默认的sort()是按字符串Unicode码点排序,处理纯数字数组会出现[10,2]排序后仍为[10,2]的问题,确实需要排序数字数组时要改成arr.sort((a,b) => a - b)
  • 更简单的数组去重可以直接用Set实现,性能也更优:
    const removedIntegers = arr => [...new Set(arr)]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:57:04