JavaScript:如何将多个数组变量传入单个函数处理?
处理多数组传入取最后元素函数的方案
嘿,先看你的代码——你的valueIn函数逻辑本身是没问题的,它能正确取出单个数组的最后一个元素。你说对pzz无效,其实是因为你只调用了valueIn(arr),完全没给pzz调用这个函数的机会呀😎
下面给你几种处理多数组的方法,按需选择:
1. 最直接:逐个调用函数
如果数组数量不多,直接分别传入每个数组就行,顺便给你优化了变量声明避免全局污染:
var arr = ['abc', 'def', 'ghi']; var pzz = ['jkl', 'lmn', 'opq']; function valueIn(v) { // 用const声明局部变量,避免全局变量泄露 const lastIndex = v.length - 1; console.log(v[lastIndex]); } // 分别处理两个数组 valueIn(arr); // 输出 ghi valueIn(pzz); // 输出 opq
2. 进阶:让函数支持一次性传入多个数组
用ES6的剩余参数语法,让函数可以接收任意数量的数组参数,批量处理:
var arr = ['abc', 'def', 'ghi']; var pzz = ['jkl', 'lmn', 'opq']; // 用...arrays接收所有传入的数组参数 function valueIn(...arrays) { arrays.forEach(item => { // 加个类型判断,避免非数组参数报错 if (Array.isArray(item)) { // 更简洁的取最后一个元素方式:arr.at(-1)(ES2022+支持) console.log(item.at(-1)); } else { console.warn(`⚠️ ${item} 不是有效数组`); } }); } // 一次传入多个数组,甚至可以传更多 valueIn(arr, pzz); // 依次输出 ghi、opq
3. 另一种思路:传入数组的集合
如果你习惯把多个数组打包成一个大数组,也可以这样处理:
var arr = ['abc', 'def', 'ghi']; var pzz = ['jkl', 'lmn', 'opq']; function valueIn(arrayCollection) { arrayCollection.forEach(arr => { if (Array.isArray(arr)) { console.log(arr[arr.length - 1]); } }); } // 传入包含所有目标数组的大数组 valueIn([arr, pzz]); // 依次输出 ghi、opq
小提示:arr.at(-1)是ES2022新增的语法,直接用负数索引取数组末尾元素,比arr[arr.length-1]更简洁易懂,如果你的运行环境支持(比如现代浏览器、Node.js 16+),非常推荐使用~
内容的提问来源于stack exchange,提问作者NS01
相关产品推荐
相关产品推荐

