扩展运算符
扩展运算符:将数组转换为逗号隔开的参数列表
//扩展运算符
function fn(x, y, z) {
console.log(x, y, z);
}
var arr = [1,2,3];
fn(...arr); //调用fn函数, 传入arr的参数
应用
1. 复制数组
//复制数组
var arr1 = [1,2,3];
var arr2 = [...arr1];
2. 合并数组
//合并数组
var a = [1,2,3];
var b = [4,5,6];
var c = [7,8,9];
var d = concat(b,c); //ES5
var e = [...a,...b,...c]; //ES6
3. 用于解构赋值
//用于解构赋值
let [a,b,...args] = [1,2,3,4,5];
4. 用于字符串
//用于字符串
let arr = [..."hello"];
Array构造函数新增方法
1. Array.from()
将数组转换为纯数组
// 将类数组转化为纯数组
let ps = document.getElementsByTagName("p");
// 方法1.Array.from()
arr = Array.from(ps);
// 方法2.解构赋值
let arr = [...ps];
2. Array.of(a,b,c)
将参数列表返回一个数组
相当于创建数组
Array.of(3) !== new Array(3)
Array.of(3): 创建元素为3的数组
new Array(3): 创建长度为3的数组
数组对象新增方法
1. find(callback)
返回数组中第一个满足条件的元素,return真时返回结果
//返回 第一个val>10的元素
let arr = [9, 16, -9, 7, 56];
var result = arr.find(val => val>10);
console.log(result); //16
2. findIndex(callback)
返回数组中第一个满足条件的元素的索引
//返回 第一个val>10的元素的索引
let arr = [9, 16, -9, 7, 56];
var result = arr.findIndex(val => val>10);
console.log(result); //1
3. entries()
帮助数组遍历每一个key值与value值
//返回数组的key(数组中的索引下标) 与 value
let arr = [9, 16, -9, 7, 56];
for(let [key,value] of arr.entries()){
console.log(key, value);
}
// output:
// 0 9
// 1 16
// 2 -9
// 3 7
// 4 56
4. keys()
帮助数组遍历所有的key值 (数组中的索引值)
5. includes()
检索数组是否包含某个值,返回布尔值
// 检测数组中是否包含7
let arr = [9, 16, -9, 7, 56];
var result = arr.includes(7);
console.log(result); //true
6. Array.isArray(arr)
判断 是否是数组,返回布尔值
7. filter(callback)
过滤数组单元,将满足条件的元素过滤
自动将每一个元素放入callback中进行处理,如果返回值为true,将元素放入新数组中,否则不存在
callback === function(value,index){}
形参val,代表数组中的每一个值
形参index,代表数组中每一个值得下标
//过滤数组中 小于0 的元素
let arr = [9, 16, -9, 7, -56];
var result = arr.filter( val => val>0);
console.log(result); //[9, 16, 7]
8. map(callback)
对数组进行遍历,将计算后的值返回新数组
// 将数组元素的值 *2
let arr = [9, 16, -9, 7, -56];
var result = arr.map(val => val*2);
console.log(result); // [18, 32, -18, 14, -112]
9. some(callback)
对数组进行遍历,只要有一个满足条件,则返回true,并终止遍历,否则返回false
// 检测 大于0 的元素
let arr = [9, 16, -9, 7, -56];
var result = arr.some( val => val>100 );
console.log(result); // false
10. every(callback)
对数组进行遍历,如果有一个不满足条件,则返回false,并终止遍历,否则返回true
// 检测 大于0 的元素
let arr = [9, 16, -9, 7, -56];
var result = arr.every( val => val>0 );
console.log(result); //false
11. reduce(function(preValue, nowValue, index, arrSelf)) { return preValue + nowValue; }
累加数组单元
preValue:上一个值
nowValue:当前值
index:当前值下标
arrSelf:当前数组
// 数组求和
let arr = [9, 16, -9, 7, -56];
var result = arr.reduce((preval, nowval) => preval += nowval);
console.log(result); //-33