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

使用原生JS移除数组非数字元素并合并的功能实现问题求助

错误原因
  • 你写的filt函数存在逻辑缺陷:用forEach遍历数组时直接splice删除元素,会让数组的长度实时变短,后续遍历的索引会自动后移,导致被删元素后面的第一个元素直接跳过检查,过滤不完全。
  • 这种边遍历边修改原数组的写法还会改动你传入的原始数组,可能引发其他意料之外的问题。
修复方案

直接用数组原生的filter方法实现过滤逻辑即可,简洁且不会出现上述问题:

function combineArray(arr1, arr2) {
    // 过滤仅保留数字类型元素
    const filterNumbers = arr => arr.filter(item => typeof item === 'number')
    // 合并两个过滤后的数组返回
    return filterNumbers(arr1).concat(filterNumbers(arr2))
}
可选调整

如果你的需求允许保留纯数字组成的字符串元素(比如'123'这类值也需要保留),可以把过滤条件修改为:

const filterNumbers = arr => arr.filter(item => !isNaN(Number(item)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:06:03