js数组方法整理
今天给大家分享一些js数组方法,在做项目中我们会常常用到这些方法,有很多方法也不会经常用到,可能过段时间就会忘记,所以给大家整理出来一些方法,供大家方便查询。
1.concat()
功能:合并数组,可以合并一个数组或多个数组,会返回合并数组之后的数据,不会改变原来的数组。
eg:
var arr=[1,2,3,'hi'];
var arr1=['你好'];
console.log(arr.concat(arr1)); // [1,2,3,'hi','你好']
console.log(arr); //[1,2,3,'hi']
2.join()
功能:将数组转化为字符串并返回转化后字符串的数据,不会改变原来的数组。
注:()中用双引号包括自己想用的分隔符,默认为逗号,为了方便查看,这里我用-。
eg:
var arr=[1,2,3,'hi'];
var arr1=['你好'];
console.log(arr.join(-)); // 1-2-3-'hi'
console.log(arr); //[1,2,3,'hi']
3.pop()
功能:删除数组的最后一位,并且返回删除的数据,会改变原来的数组。
eg:
var arr=[1,2,3,'hi'];
var arr1=['你好'];
console.log(arr.pop()); // hi
console.log(arr); //[1,2,3]
4.shift()
功能:删除数组的第一位数据,并且返回新数组的长度,会改变原来的数组。
eg:
var arr=[1,2,3,'hi'];
var arr1=['你好'];
console.log(arr.shift()); // 1
console.log(arr); //[2,3,'hi']
5.unshift()
功能:在数组的首位新增一个或多个数据,并且返回新数组的长度,会改变原来的数组。
注:unshift()方法返回的数据是新数组的长度,它增加的数据可以是一个也可以是多个。
eg:
var arr=[1,2,3,'hi'];
var arr1=['你好'];
console.log(arr.unshift('word')); // 5
console.log(arr1.unshift('marry')); // 2
console.log(arr); // ['word',1,2,3,'hi']
console.log(arr1); // ['marry','你好']
6.push()
功能:在数组的最后一位新增一个或多个数据,并且返回新数组的长度,会改变原来的数组。
注:push()方法返回的数据是新数组的长度,它增加的数据可以是一个也可以是多个。
eg:
var arr=[1,2,3,'hi'];
var arr1=['你好'];
console.log(arr.push('word')); // 5
console.log(arr1.push('marry')); // 2
console.log(arr); // [1,2,3,'hi','word']
console.log(arr1); // ['你好','marry']
7.reverse()
功能:将数组的数据进行反转,并返回反转后的数组,会改变原数组。
eg:
var arr=[1,2,3,'hi'];
console.log(arr.reverse()); // ['hi',3,2,1]
console.log(arr); // ['hi',3,2,1]
8.splice()
功能:向数组中添加或者从数组中删除,或者替换数组中的元素,然后返回被删除会替换的元素。
参数:splice(start,num,data1,data2,…).所有参数全部可选。
eg:
var arr=[1,2,3,'hi'];
console.log(arr.spilce(2,0,"a","b")); // []
console.log(arr); // [1,2,"a","b",3,"hi"]
9.toString()
功能: 将数组转换为字符串,类似于没有参数的join(),该方法会在数据发生隐式转换时会被调用,如果手动调用,直接转换为字符串,不会改变原数组。
eg:
var arr=[1,2,3,'hi'];
console.log(arr.spilce(2,0,"a","b")); // 1,2,3,'hi'
console.log(arr); // [1,2,3,"hi"]
10.valueOf()
功能: 返回数组的原始值(一般情况下就是数组本身),一般由js在后台调用,并不显示的出现在代码中。
eg:
var arr=[1,2,3,'hi'];
console.log(arr.valueOf()); // [1,2,3,'hi']
console.log(arr); // [1,2,3,"hi"]
console.log(arr.valueOf()==arr); // true
11.indexOf()
功能:根据指定的数据,从左向右,查询在数组中出现的位置,如果不存在指定的数据,返回-1,找到了指定的数据,返回该数据的索引。
参数:indexOf(value,start),value为要查询的数据,start为可选,表示开始查询的位置,当start为负数时,从数据的尾部向前数,如果查询不到value的存在,则方法返回-1。
注:如果找到该数据,直接返回该数据的索引,不在往后继续查找
eg:
var str = ["h","e","l","l","o"];
console.log(str.indexOf("l")); //2
console.log(str.indexOf("l",3)); //3
console.log(str.indexOf("l",4)); //-1
console.log(str.indexOf("l",-1)); //-1
console.log(str.indexOf("l",-3)); //2
12.forEach()
功能:es5新增的方法,用来遍历数组,没有返回值。
参数:forEach(callback);callback默认有三个参数,分别为value(遍历到的数组的数据),index(对应的索引),self(数组本身)
eg:
var arr = ["Tom","Jack","Lucy","Lily","May"];
var a = arr.forEach(function(value,index,self){
console.log(value + "--" + index + "--" + (arr === self));
})
// 打印结果为:
// Tom--0--true
// Jack--1--true
// Lucy--2--true
// Lily--3--true
// May--4--true
console.log(a); //undefined---forEach没有返回值
//该方法为遍历方法,不会修改原数组
13.map()
功能:1.同forEach功能;
2.map的回调函数会将执行结果返回,最后map将回调函数的返回值组成新数组返回。
参数map(callback);callback默认有三个参数:分别为value,index,self
eg:
//功能1:同forEach
var arr = ["Tom","Jack","Lucy","Lily","May"];
var a = arr.map(function(value,index,self){
console.log(value + "--" + index + "--" + (arr === self))
})
// 打印结果为:
// Tom--0--true
// Jack--1--true
// Lucy--2--true
// Lily--3--true
// May--4--true
//功能2:每次回调函数的返回值被map组成新数组返回
var arr = ["Tom","Jack","Lucy","Lily","May"];
var a = arr.map(function(value,index,self){
return "hi:"+value;
})
console.log(a); //["hi:Tom", "hi:Jack", "hi:Lucy", "hi:Lily", "hi:May"]
console.log(arr); //["Tom", "Jack", "Lucy", "Lily", "May"]---原数组未改变
14.filter()
功能: 1.同forEach功能
2.filter的回调函数需要返回布尔值,当为true时,将本次数组的数据返回给filter,最后filter将所有回调函数的返回值组成新数组返回(可以理解为过滤)。
参数:filter(callback),callback参数分别为value,index,self
eg:
//功能1:同forEach
var arr = ["Tom","Jack","Lucy","Lily","May"];
var a = arr.filter(function(value,index,self){
console.log(value + "--" + index + "--" + (arr === self))
})
// 打印结果为:
// Tom--0--true
// Jack--1--true
// Lucy--2--true
// Lily--3--true
// May--4--true
//功能2:当回调函数的返回值为true时,本次的数组值返回给filter,被filter组成新数组返回
var arr = ["Tom","Jack","Lucy","Lily","May"];
var a = arr.filter(function(value,index,self){
return value.length > 3;
})
console.log(a); //["Jack", "Lucy", "Lily"]
console.log(arr); //["Tom", "Jack", "Lucy", "Lily", "May"]---原数组未改变