// 函数扩展中 rest参数
// ES6 引入了 rest 参数(形式为“ ... 变量名),用于获取函数的多余参数,这样就不需要
// 使用 arguments 对象了 rest 参数搭配的变量是一个数组,该变量将多余的参数放入其中
// rest 参数中的变量代表一个数组,所以数组特有的方法都可以用于这个变量
//下面是 rest 参数代替 arguments 变量的例子
// es5 arguments 变量的写法
function sortNumbers() {
return Array.prototype.slice.call(arguments).sort();
}
//es6 rest 参数的写法 numbers是一个数组 所以可以直接使用数组方法sort
// const sortNumbers = (...numbers) => numbers.sort();
// 数组扩展
//将一个数组转为用逗号分隔 参数序列
//该运算符主要用于函数调用
console.log (...[1,2,3])
function push(array,...items) {
array.push (...items);
}
let tmp = []
push(tmp,1,2,3)
console.log(tmp)
//替代数组apply 不需要apply方法了
function f(x,y,z) {
console.log(x+y+z)
}
var args = [1,2,3]
f.apply(null,args) // apply方法
// f(...args) //es6方法
//扩展运算符 应用
//合并数组
// let m = [1,2,3].concat(['a','b']);
let m = [1,2,3,...['a','b']];
console.log(m)
//与解构赋值结合
var list = [1,2,3,4,5]
// a1= list[0], b1= list.slice(1) //es5写法
//如果将扩展运算符用于数组赋值,则只能将其放在参数的最后一位,否则会报错。
let [a1,...b1] = [1,2,3,4,5]
console.log(a1,'---',b1)
//扩展运算符还可以将字符串转为真正的数组。
let str = [...'hello']
console.log(str)
// 数组的方法 find keys values includes
// Array.prototype.includes 方法返回一个布尔值,表示某个数组是否包含给定的值,
// 与字符串的 includes 方法类似。es2016 引入了该方法。
let t = [1,2,3,4]
t.includes(2)
console