JS中常用数组方法总结
By Awayer 2023/3/15
1.push( )
功能:在数组的结尾添加一个或者多个元素
传参:需要加进去的值
返回值:新数组长度
是否影响原数组:是
let arr = [1,2,'3','4'];
let ret = arr.push('a');
console.log(arr); // [1,2,'3','4','a']
console.log(ret); // 5
2.unshift( )
功能:在数组第一位添加一个或多个元素
传参:需要加进去的值
返回值:新数组长度
是否影响原数组:是
let arr = [1,2,'3','4'];
let ret = arr.unshift('a');
console.log(arr); // ['a',1,2,'3','4']
console.log(ret); // 5
3.pop( )
功能:删除数组的最后一位数据,每次只能删除数组最后一位
传参:无
返回值:被删除的数据
是否影响原数组:是
let arr = ['q','w','q'];
let res = arr.pop();
console.log(arr); // ['q','w']
console.log(res); // q
4.shift( )
功能:删除数组第一位数据,每次只能删除数组第一位
传参:无
返回值:被删除的数据
是否影响原数组:是
let arr = ['A','w','a','y'];
let res = arr.shift();
console.log(arr); // ['w','a','y']
console.log(res); // A
5.reverse( )
功能:将数组进行反转
传参:无
返回值:反转后的数组
是否影响原数组:是
let arr = ['I','Love',' Sipc'];
let res = arr.reverse();
console.log(arr); //[ ' Sipc', 'Love', 'I' ]
console.log(res); //[ ' Sipc', 'Love', 'I' ]
6.sort( )
功能:将数组进行排序
传参:箭头函数
返回值:排序后的数组
是否影响原数组:是
传参写法:
let arr = [3,1,5,2,4];
let res = arr.sort((a,b)=>{
return a-b; // 如果a-b>0,那么从小到大排序
})
console.log(arr); // [ 1, 2, 3, 4, 5 ]
console.log(res); // [ 1, 2, 3, 4, 5 ]
let arr = [3,1,5,2,4];
let res = arr.sort((a,b)=>{
return b-a; // 如果b-a>0,那么从大到小排序
})
console.log(arr); // [ 5, 4, 3, 2, 1 ]
console.log(res); // [ 5, 4, 3, 2, 1 ]
数组元素为对象时(可以按照某个属性来排序):
let arr = [
{name:'澄闪',star:6},
{name:'德克萨斯',star:5},
{name:'松果',star:4}
];
let res = arr.sort((a,b)=>{
return b.star-a.star;
});
console.log(arr); // [ { name: '澄闪', star: 6 },{ name: '德克萨斯', star: 5 },{ name: '松果', star: 4 }]
console.log(res); //同上
7.splice( )
功能:向数组中添加/删除/替换元素
传参:(index , howmany , item1,item2...)
返回值:被改变的值的数组
是否影响原数组:是
let arr = ['2004','1','30'];
let res = arr.splice(1,1,'12');
console.log(arr); // [ '2004', '12', '30' ]
console.log(res); // ['1']
let arr = ['2004','1','30'];
let res = arr.splice(1,2,'12','1');
console.log(arr); // [ '2004', '12', '1' ]
console.log(res); // [ '1', '30' ]
8.concat( )
功能:多个数组拼接成新的数组
传参:需要拼接的数组,可以是多个
返回值:拼接好的数组
是否影响原数组:否
let arr1 = [1,2,3];
let arr2 = ['a','b','c'];
let arr3 = ['qwq','awa','115'];
let res = arr1.concat(arr2,arr3);
console.log(arr1); // [ 1, 2, 3 ]
console.log(res); // [1, 2, 3, 'a', 'b', 'c', 'qwq', 'awa', '115']
9.join( )
功能:用特定字符将数组拼接成字符串
传参:用什么特定字符拼接(不传参默认用“,”)
返回值:拼接好的字符串
是否影响原数组:否
下述代码用了split()配合join使用,实现了拼接数组:
let arr1 = [1,2,3];
let arr2 = ['a','b','c'];
let str = arr1.join() + ',' + arr2.join(); // 1,2,3,a,b,c (string)
let res = str.split(',');
console.log(arr1); // [1,2,3]
console.log(res); // [ '1', '2', '3', 'a', 'b', 'c' ]
10.slice( )
功能:截取指定位置的数组
传参:(startIndex起始下标 , endIndex终止下标**(不包括)**)
*注意是左闭右开
返回值:截取的数组
是否影响原数组:否
let arr = ['a','b','c','d','e'];
let res = arr.slice(1,4);
console.log(arr); // [ 'a', 'b', 'c', 'd', 'e' ]
console.log(res); // [ 'b', 'c', 'd' ]
11.toString( )
功能:将数组转化为字符串
传参:无
返回值:转变成的字符串
是否影响原数组:否
let arr = ['q','w','q'];
let res = arr.toString();
console.log(arr); // [ 'q', 'w', 'q' ]
console.log(res); // q,w,q (string)
我的评价是,这个方法不如直接用JS的特性,如下:
let arr = [1,2,3];
let res = arr + '';
console.log(res); // 1,2,3
console.log(typeof(res)); // string
简单又便捷嗷
12.indexOf( )
功能:查询某个元素在数组中第一次出现的位置
传参:要查询的元素
返回值:如果找到则返回第一次出现的位置,如果不存在则返回**-1**
是否影响原数组:否
let arr = ['A','w','a','y','e','r'];
let res1 = arr.indexOf('a');
let res2 = arr.indexOf('b');
console.log(res1); // 2
console.log(res2); // -1
13.lastIndexOf( )
功能:查询某个元素在数组中最后一次出现的位置
传参:要查询的元素
返回值:如果找到则返回最后一次出现的位置,如果不存在则返回**-1**
是否影响原数组:否
let arr = ['q','w','q','a','w','a'];
let res1 = arr.lastIndexOf('w');
let res2 = arr.lastIndexOf('e');
console.log(res1);
console.log(res2);
14.forEach( )
功能:遍历数组
传参:function(val , index , array)
item:每次循环的当前元素
index:当项索引值
array:原始数组
返回值:undefined
是否改变原数组:否
let arr = [1,2,3,4,5];
let res = arr.forEach((item,index)=>{
console.log('元素:'+ (item+1) +'下标:'+index);
})
//元素:2下标:0
//元素:3下标:1
//元素:4下标:2
//元素:5下标:3
//元素:6下标:4
console.log(res); // undefined
15.map( )
功能:遍历数组,每次循环执行传入的回调函数,根据回调函数的返回值,生成一个新数组
传参:回调函数(val , index , array)
item:每次循环的当前元素
index:当项索引值
array:原始数组
返回值:处理后的新数组
let arr = [1,2,3,4,5,6];
let res = arr.map((item)=>{
return item + 1;
});
console.log(res); // [ 2, 3, 4, 5, 6, 7 ]