数组常用方法
扩展运算符
let arr = [1, 2, 3]; let arr2 = [...arr]; //等同于 let arr2 = Array.from(arr); let [a, b, c] = [1, 2, 3]; //a=1, b=2, c=3 let [ , , third] = ["foo", "bar", "baz"]; //third="baz" let [head, ...tail] = [1, 2, 3, 4]; //head=1, tail=234 let [x, y, ...z] = ['a']; //x=a, y=undefined, z=[], 如果解构不成功,变量的值就等于undefined let [x, y = 'b'] = ['a']; // x='a', y='b',解构赋值允许指定默 // 解构赋值超强 const { form: { validateFields } } = this; validateFields((err, values) => { if (!err) { // eslint-disable-next-line no-console console.log("Received values of form: ", values); } });
Array.from:把类数组(获取一组元素、arguments...)对象转成数组,个人观点:具备length这个东西都可以使用Array.from()转数组
let aLi = document.querySelectorAll('ul li'); let arrLi = Array.from(aLi); //等同于let arrLi = [].slice.call(aLi); ES5方法 function show(){ let args = Array.from(arguments); console.log(args) //[1,2,3,4,5] } show(1,2,3,4,5) let str = 'strive'; let arr = Array.from(str); //等同于let arr = str.split(''); console.log(arr); //[s,t,r,i,v,e] let json = { 0:'apple', 1:'banana', 2:'orange', length:3 } let arr = Array.from(json); console.log(arr); //['apple','banana','orange'],json对象必须有length,否则为[]
Array.of:把一组值,转成数组(没用过)
let arr = Array.of('apple','banana','orange'); console.log(arr); //['apple','banana','orange']
Array.find:查找,找出第一个符合条件的数组成员,如果没找到返回undefined
let arr = [23,900,101,80,100]; let res = arr.find((val, index, arr) => { return val>100; }) console.log(res); //返回数字900
Array.findIndex:找的是位置,没找到返回-1
let arr = [23,900,101,80,100]; let res = arr.findIndex((val, index, arr) => { return val>100; }) console.log(res); //返回数字1
Array.fill:Array.fill(填充的东西,开始位置,结束位置)(没用过)
let arr = new Array(10); arr.fill('默认值'); console.log(arr); //['默认值'......]10个默认值 arr.fill('默认值',1,3); //1起始位置,3结束位置 console.log(arr); //下标为1和下标为2的是默认值,其他为空
Array.includes:返回布尔值true/false,跟indexOf类似
let arr = ['apple','banana','orange']; let b = arr.includes('banana'); console.log(b); //返回布尔值true