如何将JavaScript函数的多数值参数转为整数数组?
解决JavaScript函数接收多参数转整数数组的问题
嘿,我来帮你搞定这个问题!你遇到的核心问题是如何捕获函数接收的所有参数,而不是仅第一个,然后把它们转换成整数数组对吧?我给你两种简单靠谱的方案,都是日常开发里常用的:
方案一:用ES6剩余参数(最推荐)
ES6的剩余参数语法(...)可以直接把所有传入的参数打包成一个真数组,这是最简洁直观的写法,不用处理类数组的麻烦:
function cc(...cards) { // 把每个参数转换成整数,这里用parseInt确保进制正确,或者用Number()也可以 const integerCards = cards.map(card => parseInt(card, 10)); // 测试一下,你可以替换成自己的业务逻辑 console.log(integerCards); return integerCards; } // 调用测试 cc(2, 3, 4, 5, 6); // 输出 [2, 3, 4, 5, 6]
为什么你之前用[card]只能拿到第一个参数?因为如果函数定义成function cc(card),card变量只会绑定第一个传入的参数,剩余的参数根本没被捕获。而...cards会把所有传入的参数都放进cards数组里,完美解决这个问题。
方案二:用arguments对象(兼容ES5及更早环境)
如果你的代码需要兼容旧环境,没法用ES6语法,可以用函数内置的arguments对象——它是一个类数组对象,包含了所有传入的参数。不过需要先把它转换成真数组,再做转换:
function cc() { // 把类数组的arguments转换成真数组 const cardsArray = Array.from(arguments); // 或者用展开语法:const cardsArray = [...arguments]; // 转换为整数数组 const integerCards = cardsArray.map(card => parseInt(card, 10)); console.log(integerCards); return integerCards; } // 调用测试 cc(2, 3, 4, 5, 6); // 输出 [2, 3, 4, 5, 6]
小提醒:关于整数转换的细节
- 用
parseInt(card, 10)的时候,一定要加上第二个参数10(十进制),避免遇到类似'08'这种字符串时被当成八进制解析的问题。 - 如果你的参数本身就是数值类型,用
Number(card)会更简洁,不过它对非数值的处理更严格(比如Number('12a')会返回NaN,而parseInt('12a',10)会返回12),你可以根据自己的需求选择。
内容的提问来源于stack exchange,提问作者mike87
相关产品推荐
相关产品推荐

