1、运算扩展符
ES6通过扩展元素符<font style="color:rgb(71, 101, 130);">...</font>
,好比 <font style="color:rgb(71, 101, 130);">rest</font>
参数的逆运算,将一个数组转为用逗号分隔的参数序列
console.log(...[1, 2, 3])
// 1 2 3console.log(1, ...[2, 3, 4], 5)
// 1 2 3 4 5[...document.querySelectorAll('div')]
通过扩展运算符实现的是浅拷贝,修改了引用指向的值,会同步反映到新数组
let sourece = [1, 2, 3, 4, 5, [11, 12]]
let temp = [6, 7, 8, 9]
let target = [...sourece, ...temp]
target[0] = 10
target[5][0] = 111
console.log(sourece) // [1,2,3,4,5,[111,12]]
console.log(temp) // [6,7,8,9]
console.log(target) // [10,2,3,4,5,[111,12],6,7,8,9]
2、Array.from()
将两类对象转为真正的数组:类似数组的对象和可遍历<font style="color:rgb(71, 101, 130);">(iterable)</font>
的对象(包括 <font style="color:rgb(71, 101, 130);">ES6</font>
新增的数据结构 <font style="color:rgb(71, 101, 130);">Set</font>
和 <font style="color:rgb(71, 101, 130);">Map</font>
)
let arrayLike = {'0': 'a','1': 'b','2': 'c',length: 3
};
let arr2 = Array.from(arrayLike);
console.log(arr2) // ['a', 'b', 'c']
还可以接受第二个参数,用来对每个元素进行处理,将处理后的值放入返回的数组
var aaa = [1, 2, 3]
var bbb = Array.from([1, 2, 3], (x) => x * x)
console.log(aaa) // [1,2,3]
console.log(bbb) // [1,4,9]
3、Array.of()
用于将一组值,转换为数组
console.log(Array.of()) // []
console.log(Array.of(3)) // [, , ,]
console.log(Array.of(3, 11, 8)) // [3, 11, 8]
4、copy.Within()
将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组
参数如下:
- target(必需):从该位置开始替换数据。如果为负值,表示倒数。
- start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示从末尾开始计算。
- end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示从末尾开始计算。
var aaa = [1, 2, 3, 4, 5]
var bbb = aaa.copyWithin(0, 3)
console.log(aaa) //[4,5,3,4,5]
console.log(bbb) //[4,5,3,4,5]var aaa1 = [1, 2, 3, 4, 5]
var bbb1 = aaa1.copyWithin(0, -2)
console.log(bbb1) //[4,5,3,4,5]var aaa2 = [1, 2, 3, 4, 5]
var bbb2 = aaa2.copyWithin(0, 1, 3)
console.log(bbb2) //[2,3,3,4,5]
5、find()
在原数组中找到第一个符合条件的数组成员
第一参数是回调函数,第二个参数用来绑定回调函数的<font style="color:rgb(71, 101, 130);">this</font>
对象
var student = {name: "zhangsan",age: 30
}function f(v) {return v > this.age;
}var arr = [10, 20, 30, 40, 50]
var need = arr.find(function (v) { return v > this.age }, student)
var need2 = arr.find(v => v > 30, student)
console.log(need) // 40
console.log(need2) // underfind 箭头函数中无this指向