ES6 中 rest 剩余参数介绍(…args)
简单介绍
- Rest就是为解决传入的参数数量不一定, rest parameter(Rest 参数) 本身就是数组,数组的相关的方法都可以用。
- 在这之前,参数我们会读取到
arguments
, 但是arguments
是一个类数组;
1. arguments 类素组对象:
function s() {
console.log(arguments)
}
s(1, 2, 2, 3) // [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]
可以在浏览器环境中执行一下:
可以看到,这里打印的 arguments
实质上是一个拥有 length 属性的类数组对象。它不能使用数组的方法。
2. 看一个示例(rest 剩余参数):
// 例一:
function f(a, b, ...theArgs) {
return theArgs;
}
console.log(f(1,2,3)) // [3]
// 例二:
function f(...theArgs) {
return theArgs;
}
console.log(f(1,2,3)) // [1, 2, 3]
ES6 新增的 rest
剩余参数,返回的是一个新的数组,数组的每一项是传入的形参。是一个真正的数组,可以使用数组的方法。
3. 昨天看到群里有人提了一个处理数据的问题:
先来聊聊思路:
总之就是处理数据,得到一个新的数据结构。
可选的方法有:
- filter
- slice
- if else …
- 还有你脑海里想的
这里我考虑到了 rest
参数。所以写了一个简单的解决方案:
const segmentation = ((...args) => {
let start = 0;
let end = 0;
return args.map((item) => {
start = end;
end += item;
return {
list: a.slice(start, end)
}
})
})(3, 2, 3)
最终得到了所需要的结果。
如果在做的各位有其他想法可以一起讨论讨论~