如何编写可复用的数组正负数字分离JavaScript函数?
通用正负数组分类函数实现
你可以通过**剩余参数(Rest Parameters)**接收任意数量的数组参数,在函数内部统一处理所有数组的元素,彻底避免重复代码。以下是具体实现方案:
实现思路
- 用
...arrays语法接住所有传入的数组,不管你传1个还是N个都能处理 - 函数内部初始化
negativeNumbers和positiveNumbers两个数组,避免全局变量污染问题 - 嵌套遍历:先遍历每个输入数组,再遍历数组内的元素,判断正负后分别推入对应数组
- 返回包含两个结果数组的对象,让外部调用时能清晰获取分类结果
完整代码
function separateNumbers(...arrays) { const negativeNumbers = []; const positiveNumbers = []; // 遍历所有传入的数组 arrays.forEach(array => { // 遍历当前数组的每个元素 array.forEach(element => { if (element < 0) { negativeNumbers.push(element); } else if (element >= 0) { positiveNumbers.push(element); } }); }); return { negativeNumbers, positiveNumbers }; } // 用法示例 const arrayOne = [-2, 5, -3, 6]; const arrayTwo = [-12, 15, -13, 16]; const arrayThree = [0, -7, 9]; // 测试包含0的场景 const result = separateNumbers(arrayOne, arrayTwo, arrayThree); console.log('正数数组:', result.positiveNumbers); // [5, 6, 15, 16, 0, 9] console.log('负数数组:', result.negativeNumbers); // [-2, -3, -12, -13, -7]
优势说明
- 复用性拉满:不管你后续要处理多少个数组,直接传入函数即可,不用重复写遍历逻辑
- 逻辑封装:把分类逻辑全部收拢在函数内部,外部代码不用关心具体实现细节
- 避免数据混乱:原来的全局数组会在多次调用时累加旧数据,现在每次调用函数都会初始化新的结果数组,数据更干净
内容的提问来源于stack exchange,提问作者Oğuztoğrul Tahirli
相关产品推荐
相关产品推荐

