js数组方法总结
JavaScript语言里给数组提供了很多好用的方法对数组进行操作,用起来非常方便,在此总结记录一下。
一.数组创建
1.使用 Array 构造函数:
var arr1 = new Array(); //创建一个空数组
var arr2 = new Array(10); // 创建一个包含10项的数组
var arr3 = new Array("pink","teacher"); // 创建一个包含2个字符串的数组
2.使用字面量表示法:
var arr4 = []; //创建一个空数组
var arr5 = [20]; // 创建一个包含10项的数组
var arr6 = ["pink","teacher"]; // 创建一个包含2个字符串的数组
二.数组方法
数组的方法主要有以下这些:
1.遍历数组 !!!!
① for循环
② forEach()
③ map()
④ filter()
⑤ every()
⑥ some()
2.转换字符串:
① join()
② toString()
3. 添加元素:
① unshift() 在开头添加元素
② push() 在末尾添加元素
4.删除元素:
① pop() /shift() 删除数组的最后一个元素
② splice() 删除指定索引的元素
5.截取数组内容:slice()
6.数组排序: sort()
7.翻转数组:reverse()
8.连接数组:concat()
9.判断是否是数组
① isArray()
②instanceof (运算符)
1.遍历数组
(1)普通for循环
for(let i = 0; i < arr.length; i++) {
}
想必学过编程的同学都用过,最简单的,也是使用最频繁的一种。
(2)优化版for循环(性能最高)
for(let i = 0, len=arr.length; i < len; i++) {
}
使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组长度较大时优化效果比较明显。基本上是这些方法里面性能最好的一个。
(3)forEach()
arr.forEach( function(item, idnex, array){
} ) //item是数组元素,index是索引,array是数组自身
数组自带的forEach()方法,使用也较频繁,性能一般。
(4)map()
var arr2 = arr.map(function(item,index){
return item*2 //将数组每个元素的值*2
})
map:意思是映射(一个对应一个),对数组内容进行操作然后返回,如果未返回,值为undefined,返回值长度和原数组一样。
(5)every()
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.every(function(item) {
return item < 10;
});
判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。
(5)filter()
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.filter(function(item, index) {
return item >= 3
});
filter: 过滤器(符合条件的留下)。
① 符合条件的元素return true ,被返回。
② 原的内容不变,只是筛选功能。
(6)some()
var arr = [1, 2, 3, 4, 5];
var flag= arr.some(function(x) {
return x > 3;
});
console.log(flag); //true
判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。
2.转换为字符串
(1) join() 和 toString()
var arr = [1,2,3];
console.log(arr.join('-')); // 1-2-3
console.log(arr.toString()); // 1,2,3
① toString() 转换为字符串,没有参数,以逗号分割。
② join(‘分隔符’) 一个参数,可以规定分隔符,默认是逗号。
3.添加元素
(1)push()
var arr = [];
arr.push('pink老师')
arr.push('pink颜色','pink老师')
可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。
(2)unshift()
var arr = ['last'];
arr.unshift('pink老师')
arr.unshift('pink颜色','pink老师')
接收任意数量的参数,将参数依次添加到原数组开头,并返回数组的长度 。
4.删除元素
(1) pop() / shift()
var arr = ['pink颜色','pink老师','pink'];
arr.pop()
console.log(arr) // ['pink颜色','pink老师'];
arr.shift()
console.log(arr) // ['pink颜色'];
数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。
(2) splice()
var arr = [1,2,3,4,5,6,7,8,9];
arr.splice(1,5) //从索引1开始,删除五个元素
console.log(arr) // [1,7,8,9];
① 非常强大,也是使用最频繁的方法,可以删除任意数量的项。
② 指定 2 个参数:要删除的第一项的索引值和要删除的项数。
5.截取数组元素
(1) slice()
var arr = [1,3,5,7,9];
var arr2 = arr.slice(1,2); // [3,5]
slice(start,end):返回从原数组中 start索引值 到 end索引值 之间的项组成的新数组。没有end 的话默认截取到数组末尾。
6.数组排序
(1) sort()
在排序时,sort()方法会调用每个数组项的 toString()转型方法,然后比较得到的字符串,以确定如何排序。即使数组中的每一项都是数值, sort()方法比较的也是字符串,所以出现两位及以上的数字时会出错。用以下的方法解决:
arr.sort(function(a, b){
return a - b //升序排序
})
① 升序时用 return a - b
② 降序时用 return b - a
7.翻转数组
(1) reverse()
var arr = [1,3,5,7,9];
arr.reverse(); // [9,7,5,3,1]
反转数组项的顺序,会改变原数组。
8.连接数组
(1) concat()
var arr = [1,3,5];
var arr2 = [2,4,6]
var arr3 = arr.concat(arr2 ); //[1,2,3,4,5,6]
concat() :将参数添加到原数组中。
① 先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。
② 在没有参数的情况下,它只是复制当前数组并返回副本。
8.判断是否是数组
(1) Array.isArray()
var arr = [1,3,5];
Array.isArray(arr) //true
Array.isArray('arr') //false
用于确定传递的值是否是一个 Array,如果值是 Array,则为true; 否则为false。
(2) instanceof (运算符,并不是一个方法)
var arr = [1,3,5];
var flag = arr instanceof Array //true
var flag2 = 'arr' instanceof Array //flag
运算符,可以用来检测是否是数组