增删改
arr.push
(element1,…)
定义:向数组的末尾追加元素,返回 length
新数组长度, 改变原数组
扩展:
栈
方法:后进先出 -> push + pop
队列
方法:先进先出 -> push + shift
var arr = [1,2,3];
var res = arr.push(4, 5);//5
console.log(arr);//[1,2,3,4,5]
arr.unshift
(element1, …)
定义:向数组的开头追加元素,返回 length
新数组长度, 改变原数组
var arr = [1,2,3];
var res = arr.unshift(4, 5);//5
console.log(arr);//[5,4,1,2,3]
arr.pop
()
定义:删除数组的最后一项,返回删除元素的值
, 改变原数组
注意:数组为空时,返回undefined
var arr = [1,2,3];
var res = arr.pop();//3
console.log(arr);//[1,2]
console.log([].pop());//undefined
arr.shift
()
定义:删除数组的开头一项,返回删除元素的值
, 改变原数组
注意:数组为空时,返回undefined
var arr = [1,2,3];
var res = arr.shift();//1
console.log(arr);//[2,3]
console.log([].pop());//undefined
arr.splice
(start,deleteCount,element1,…)
定义:实现数组指定位置的增加,修改,删除,并返回被移除的内容
,改变原数组
参数1:修改开始的位置
参数2:需要移除的数组元素个数,可选,省略
或大于后面的元素数
会移除后面所有元素
剩余参数:要添加的数组元素,可选
注意:没有移除数组元素时,返回[ ]
空数组
var arr = [1,2,3];
//增加
var res = arr.splice(3,1,4);//[]
console.log(arr);//[1,2,3,4]
//修改
var res1 = arr.splice(0,2,5,6);//[1,2]
console.log(arr);//[5,6,3,4]
//删除
var res2 = arr.splice(1,1);//[6]
console.log(arr);//[5,3,4]
var res3 = arr.splice(1);//[3,4]
console.log(arr);//[5]
删除数组末尾一项的四种方法
方式1:arr.length–
方式2:arr.pop()
方式3:arr.splice(arr.length - 1)
方式4:delete arr[arr.length - 1]
向数组末尾追加项的三种方法
方式1:arr.push(x)
方式2:arr[arr.length] = x
方式3:.arr.splice(arr.length, 0, x)
查询和拼接
arr.slice
(start,end)
定义:数组的查询,并返回查询的新数组
参数1:查询开始的位置,为
负数
,表示数组中的倒数第几个元素
开始
参数2:查询终止的位置,可选,省略
或大于后面的元素数
会移除后面所有元素,为负数
,表示数组中的倒数第几个元素终止,为小数
,则会先进行向下取整
注意:arr.slice(0) 实现浅克隆
var arr = [1,2,3,4]
arr.slice(1);//[2,3,4]
arr.slice(1,2);//[2]
arr.slice(-2,-1);//3
arr.slice(-2,0);//[]
arr.concat
(value1,…)
定义:实现数组拼接,返回拼接后的新数组
参数:数组或值,不传参
数则相当于浅克隆
var arr = [1,2,3]
arr.concat(4);//[1,2,3,4]
arr.concat('a');//[1,2,3,'a']
arr.concat([4,5,6]);//[1,2,3,4,5,6]
arr.concat();//[1,2,3]
排序和排列
arr.reverse
()
定义:把数组倒过来排序,返回排列后的新数组
,改变原数组
扩展:实现reverse方法
const reverse = (nums, start, end) => {
while (start < end) {
const temp = nums[start]
nums[start] = nums[end]
nums[end] = temp
start++
end--
}
return nums
}
reverse([1,2,3,4,5,6,7,8],0,4)//[5, 4, 3, 2,1, 6, 7, 8]
arr.sort
()
定义:实现数组的排序,返回排列后的新数组
,改变原数组
参数1:排列规则函数,返回的数小于0,比较数a,b的顺序被替换,省略,则按各个字符的
Unicode点位
排序
var arr = [1,2,3,20];
arr.sort();//[1,2,20,3] 按unicode码排序
console.log(arr);//[1,2,20,3]
扩展:数组的正常排序
arr.sort( function (a, b){ return a- b } )
var arr = [2,1,3,20];
arr.sort((a,b) => a-b);//[1,2,3,20]
console.log(arr);//[1,2,3,20]
数组转换
arr.toString
()
定义:把数组转换为字符串
var arr = [1,2,3];
arr.toString();//'1,2,3'
扩展:用于展平数组
// 方法1:使用字符串的toString
function test(arr){
return arr.toString().split(',')
}
// 问题: 1.所有数据类型转换为字符串,如'function Date() {...}','()=>{...}'
// 2.undefined,null,[] 会转换成空字符串
// 3.Number,String,Boolean类型会被转成初始值
// 4.对象转化为 '[object Object]'
arr.join
()
定义:把数组转换为字符串
参数一:分隔符,可选,默认
逗号
分割
var arr = [1,2,3];
arr.join();//'1,2,3'
arr.join('*');//'1*2*3'
检测数组种是否包含某一项的4种方法
arr.indexOf
(x, start)
定义:检测当前项在数组中第一次 / 最后一次出现的索引值,返回索引值,没找到返回 -1
参数1:要查找的元素
参数2:开始查找的位置,可选,默认值为 0
注意:IE6~8不兼容
var arr = [1,2,3];
arr.indexOf(1);//0
arr.indexOf(1,1);//-1
arr.includes
(x,start)
定义:检测当前数组是否包含某项,返回布尔值
参数1:要查找的元素
参数2:开始查找的位置,可选,默认值为 0
注意:ES6语法,IE6~8不兼容
var arr = [1,2,3];
arr.includes(1);//true
arr.includes(1,1);//false
arr.find
(callback,thisArg)
定义:检测当前数组是否包含满足提供的测试函数的项,返回该项,没找到返回 undefined
参数1:回调函数
参数2:调用时的this指向
注意:ES6语法,IE6~8不兼容
var arr = [1,2,3]
arr.find((v,i) => i===2);//3