操作数组的方法
ES6 Array.of()返回所有参数数值组成的数组
let a = Array.of(1, 2, 3);//[1, 2, 3] let a = Array.of(3); //[3] let a = Array(3); [undefined, undefined, undefined]
ES6 Array.from()将两类对象转为真正的数组
第一个参数(必须):要转换为真正数组的对象
第二个参数(可选):对每个元素进行处理,将处理后的值放入返回的数组
第三个参数(可选):用来绑定this
//对象拥有length属性 let obj = {0: 'a', 1: 'b', 2: 'c', length: 3} let arr = Array.from(obj); //['a', 'b', 'c'] let arr = Array.from('hello'); ['h', 'l', 'l', 'o']
改变原数组的方法
let a = [1, 2, 3]; //pop()删除数组最后一个元素,返回该元素 let item = a.pop() //item:3 a:[1, 2] //shift()删除数组的第一个元素,返回该元素 let item = a.shift()// item:1 a:[2, 3] //push()向数组最后一位添加元素, 返回新数组长度 let item = a.push(4) //item:4 a:[1, 2, 3, 4] //unshift()向数组开头添加一个元素, 返回新数组的长度 let item = a.unshift(5)//item:4 a:[5, 3, 2, 1] //reverse()用于颠倒数组元素的顺序 let item = a.reverse()//item:[3,2,1]
splice()添加/删除数组元素,返回被删除的元素的新数组
语法: arr.splice(index, howmany, item1, ...)
index: 必须。整数,规定添加删除的位置,使用负数可以从数组结尾处规定位置。
howmany: 必须。要删除的项目数量。为0则不删除。
item,... :可选。向数组添加新的项目。
1.删除元素
let a = [1, 2, 3, 4, 5, 6, 7]; let itme1 = a.splice(0, 3);//返回被删除项目的数组[1, 2, 3] a变为[4, 5, 6, 7] let item2 = a.splice(-1, 3)// 从6开始后面只有1个元素所以只能删除7,返回7
2.删除并添加 往后加参数即可,先删除后添加
let a = [1, 2, 3, 4, 5, 6, 7]; let item = a.splice(-2, 3, '1', '2')//[6, 7] a:[1,2,3,4,5,'1','2']
sort()对数组元素进行排序,返回该数组
var array = [10, 1, 3, 4,20,4,25,8]; array.sort(function(a, b) {return a- b})//[1,3,4,4,8,10,20,25]; array.sort(function() {return Math.random() > 0.5 ? 1 : -1})//随机排序
不改变原数组的方法
ES5:join、toLocateString、toStrigin、slice、cancat、indexOf、lastIndexOf
ES7: includes
join()数组转字符串 把数组中的所有元素通过制定的分隔符进行分割放入一个字符串,返回生成的字符串
let a = ['hello', 'world']; let str = a.join();//'hello,world' let str1 = a.join('+');//'hello+world'
let a= [['OBKoro1','23'],'test']; let str1=a.join(); // OBKoro1,23,test let b= [{name:'OBKoro1',age:'23'},'test']; let str2 = b.join(); // [object Object],test // 对象转字符串推荐JSON.stringify(obj);
所以,join()/toString()方法在数组元素是数组的时候,会将里面的数组也调用join()/toString(),如果是对象的话,对象会被转为[object Object]字符串。
slice() 浅拷贝数组的元素 返回回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象,且原数组不会被修改。
let a= ['hello','world']; let b=a.slice(0,1); // ['hello'] a[0]='改变原数组'; console.log(a,b); // ['改变原数组','world'] ['hello'] b[0]='改变拷贝的数组'; console.log(a,b); // ['改变原数组','world'] ['改变拷贝的数组']