ES6 中 rest 剩余参数介绍(...args)

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): ƒ]

可以在浏览器环境中执行一下:
ES6 中 rest 剩余参数介绍(...args)
可以看到,这里打印的 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 剩余参数介绍(...args)
ES6 新增的 rest 剩余参数,返回的是一个新的数组,数组的每一项是传入的形参。是一个真正的数组,可以使用数组的方法。

3. 昨天看到群里有人提了一个处理数据的问题:

ES6 中 rest 剩余参数介绍(...args)
先来聊聊思路:
总之就是处理数据,得到一个新的数据结构。
可选的方法有:

  1. filter
  2. slice
  3. if else …
  4. 还有你脑海里想的

这里我考虑到了 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)

ES6 中 rest 剩余参数介绍(...args)

最终得到了所需要的结果。
如果在做的各位有其他想法可以一起讨论讨论~

上一篇:Servlert基础


下一篇:Python argparse模块