数组大家都不陌生,数组我们经常用来保存各种数据。面试的时候也非常爱问数组方面的问题,今天我们就来说说数组常用的几个方法。首先什么是数组,数组是单独使用变量来储存一系列的值。
我们来简单介绍一下几个常用的数组方法。
1.push() 方法
push() 方法是向数组末尾添加一个或多个元素,返回一个新的数组,代码如下:
var array=[1,2,3]
array.push(4);
console.log(array) //输出[1,2,3,4]
2.sort() 方法
sort()方法是对数组进行排序,可以数字也可以字母,代码如下:
//数字
var array = [1, 201, 32, 15, 32, 54]
array.sort(function (a, b) { return a - b }); //数字排序需要一个回调函数
console.log(array) //输出 [1,15,32,32,54,201]
//字母排序针对首字母
var array = ["a","c","r","v","k","b"]
array.sort();
console.log(array) //输出 ["a", "b", "c", "k", "r", "v"]
3.indexOf() 方法
indexOf()方法是查找数组中元素所在的位置,存在返回下标,不存在返回-1。代码如下:
var fruits = ["香蕉", "橙子", "苹果", "甜瓜"];
var a = fruits.indexOf("苹果")
var b = fruits.indexOf("西瓜")
console.log(a) //输出下标2
console.log(b) //不存在 输出-1
4.concat() 方法
concat()方法是数组合并的方法,可以1个或者合并多个数组。代码如下:
var arr = ["小李", "潇潇"];
var arr2 = ["渣渣", "老万", "老贵"];
var newarr = arr.concat(arr2);
console.log(newarr);//输出["小李", "潇潇", "渣渣", "老万", "老贵"]
5.copyWithin() 方法
copyWithin(0 方法复制数组到指定位置的方法三个参数,参数1复制到那的位置,参数2开始复制的位置,参数3结束复制的位置,这里的位置都是指下标。代码如下:
var arr = ["渣渣", "老万", "老贵", "小李", "潇潇"];
var newarr = arr.copyWithin(2, 0, 2);
console.log(newarr);//输出["渣渣", "老万", "渣渣", "老万", "潇潇"]
6.includes() 方法
includes()方法是检验数组中是否包含元素,包含返回true,否返回false。代码如下:
var arr = ["渣渣", "老万", "老贵", "小李", "潇潇"];
var newarr=arr.includes("渣渣")
console.log(newarr);//返回true
7.isArray()方法
isArray是检查对象是否是数组,返回布尔。代码如下:
var arr = ["渣渣", "老万", "老贵", "小李", "潇潇"];
var newarr = Array.isArray(arr)
console.log(newarr);//返回true
8.join方法
join()方法是把数组里的元素转成一个字符串,参数是连接符。代码如下:
var arr = ["渣渣", "老万", "老贵", "小李", "潇潇"];
var newarr = arr.join("+")
console.log(newarr);//返回 渣渣+老万+老贵+小李+潇潇
9.pop()方法
pop()方法是删除数组里的最后一个元素并返回新数组。代码如下:
var arr=[1,2,3,4,5]
arr.pop();
console.log(arr) //输出[1,2,3,4]
10.reverse()方法
reverse()方法是颠倒数组即把数组逆序。代码如下:
var arr = ["渣渣", "老万", "老贵", "小李", "潇潇"];
var newarr = arr.reverse()
console.log(newarr);//返回 ["潇潇", "小李", "老贵", "老万", "渣渣"]
11.shift()方法
shift()方法是删除数组的第一个元素。代码如下:
var arr = ["渣渣", "老万", "老贵", "小李", "潇潇"];
arr.shift()
console.log(arr);//返回 ["老万", "老贵", "小李", "潇潇"]
12.unshift()方法
unshift()方法是向数组开头添加一个或多个元素。代码如下:
var arr = ["渣渣", "老万", "老贵", "小李", "潇潇"];
arr.unshift("路人甲","炮灰乙")
console.log(arr);//返回 ["路人甲", "炮灰乙", "渣渣", "老万", "老贵", "小李", "潇潇"]
13.slice()方法
slice()方法数选取原数组中的元素创建成一个新数组。注意slice()方法不会改变原数组。代码如下:
var arr = ["渣渣", "老万", "老贵", "小李", "潇潇"];
var newarr=arr.slice(1,3)//从1下标开始截取,截止到3下标,但不包含3下标元素
console.log(newarr);//返回 ["老万", "老贵"]
14.splice()方法
splice()方法用于插入,删除或替换数组元素。注意这种方法会改变原始数组。代码如下:
插入示例代码:
var arr = ["李龙", "老万", "老贵", "小李", "潇潇"];
arr.splice(1,0,"李海") //参数1开始插入或删除的下标必填,参数2是删除的长度不删除就写0,参数3是插入的内容可不填即不插入
console.log(arr);//返回 ["李龙", "李海", "老万", "老贵", "小李", "潇潇"]
删除示例代码:
var arr = ["李龙", "老万", "老贵", "小李", "潇潇"];
arr.splice(1,2) //从1下标开始删除,删除2个长度
console.log(arr);//返回 ["李龙", "小李", "潇潇"]
替换示例代码:
var arr = ["李龙", "老万", "老贵", "小李", "潇潇"];
arr.splice(1,1,"李海") //从1下标开始插入,并删除1下标元素,替换成新元素李海
console.log(arr);//返回 ["李龙", "李海", "老贵", "小李", "潇潇"]
15.tostring()方法
tostring()方法是把数组转字符串的方法,注意数组中的元素用逗号隔开。 代码如下:
var arr = ["李龙", "老万", "老贵", "小李", "潇潇"];
var newarr=arr.toString()
console.log(newarr);//返回 李龙,老万,老贵,小李,潇潇
16 es6中的克隆数组
es6中也有克隆数组的方法是使用rest参数的形式,示例代码如下:
es6
var array = [1, 2]
var array2 = [...array]
array2[0] = 2
console.log(array);//返回[1,2]
console.log(array2);//返回[2,2]
17 es6合并数组
es6中也有合并数组的方法是使用rest参数的形式,示例代码如下:
var arr = ["a", "b"]
var arr2 = ["c"]
var arr3 = ["d", "e"]
var array2 = [...arr, ...arr2, ...arr3]
console.log(array2)//返回 ["a", "b", "c", "d", "e"]
18 数组去重
有时候我们数组里面会出现重复的元素,这时候就需要数组去重,代码如下:
es6数组去重:
var array = [] for (var i = 0; i < 100000; i++) { array.push(i) } array.splice(0, 0, 15);//插入几个重复的元素array.splice(1, 0, 25);//插入几个重复的元素 array.splice(2, 0, 35);//插入几个重复的元素 new Set() //数组去重 var newarray = new Set(array);console.log(newarray)
原始js数组去重:
//原生js数组去重
console.time("add Date") //计算时间
var obj = {} //对象
var newarray = [] //新数组
var len = array.length //变量接收原数组长度
for (var i = 0; i < len; i++) { //循环
var num = array[i] //变量接收每一个不同的值
if (obj[num]) { //判断对象的属性有没有相同的属性
continue; //有就跳过本次循环进入下次循环
}
obj[num] = num //没有就把值赋值给对象
newarray.push(num) //添加到新数组中
}
console.timeEnd("add Date")
19.filter()数组过滤
数组过滤是根据条件过滤掉我们不需要的元素,示例代码如下:
var arr = [1,2,6,3,4,5];
var res = arr.filter(function(item,index,array){ //参数1元素 参数2 元素下标 参数3数组对象本身
//元素值,元素的索引,原数组。
return (item>3); //过滤掉小于3的元素
});
console.log(res);//[6, 4, 5]20.filter()
20.reduce()方法计算数组元素和
reduce()方法接收一个函数作为累加器,数组中的每一个值(从左至右)开始缩减,最终计算为一个值
示例代码:
var arr=[15,35,23,27,99]
var nums=arr.reduce(function(num1,num2){ //参数1 num1 第一次执行是第一个元素和第二个元素之和 参数2 num2 一直都是后一个元素 以此类推
return num1+num2
})
console.log(nums) //打印元素之和 199
以上就是个人总结的数组常用的几个方法,以上纯属个人观点,如有错误欢迎指正。