> 文章列表 > 数组的常用方法(回顾)

数组的常用方法(回顾)

数组的常用方法(回顾)

  • 增删改
    • push *
    • unshift *
    • pop *
    • shift *
    • splice *
    • 删除数组末尾一项的4种方法
    • 向数组末尾追加项的三种方法
  • 查询和拼接
    • slice
    • concat
  • 把数组转换为字符串
    • toString
    • join
  • 排序和排列
    • reverse *
    • sort *
  • 检测数组种是否包含某一项的方法
    • indexOf
    • includes
    • find

增删改

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] = tempstart++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