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

可以在浏览器环境中执行一下:

浏览器控制台中调试

可以看到,这里打印的 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. 昨天看到群里有人提了一个处理数据的问题:

在这里插入图片描述

先来聊聊思路:
总之就是处理数据,得到一个新的数据结构。
可选的方法有:

  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)

在这里插入图片描述

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

相关文章

原文连接:https://www.cnblogs.com/dupd/p/5951311.htmlES6...
以为Es6,javascript第一次支持了module。ES6的模块化分为导...
视频讲解关于异步处理,ES5的回调使我们陷入地狱,ES6的Prom...
TypeScript什么是TypeScript?TypeScript是由微软开发的一款开...
export class AppComponent { title = 'Tour of heroes...
用 async/await 来处理异步昨天看了一篇vue的教程,作者用as...