常用数组方法汇总
数组转字符串
- join() 数组转字符串
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var energy = fruits.join();
console.log(energy);//Banana,Orange,Apple,Mango
注:参数可选。指定要使用的分隔符。如果省略,则使用逗号作为分隔符。
排序排列(会改变原数组)
- reverse() 反转数组
var arr=[3,6,2,4,1,5];
console.log(arr.reverse())//[5, 1, 4, 2, 6, 3]
- sort() 数组排序
var fruits = ["Banana", "Orange", "Apple", "Mango"];
console.log(fruits.sort());//Apple,Banana,Mango,Orange
注意:
1.参数可选。规定排序顺序。必须是函数。
2.sort()方法默认是按字母升序。
3.要使用数字排序,你必须通过一个函数作为参数来调用。比如:
var arr=[3,6,2,4,1,5];
console.log(arr.sort(function sort(a,b){
return a-b;
}))//[1, 2, 3, 4, 5, 6] 正向
console.log(arr.sort(function sort(a,b){
return b-a;
}))//[6, 5, 4, 3, 2, 1] 反向
增删改(会改变原数组)
- push() 在数组尾部添加元素
var arr=[3,6,2,4,1,5];
arr.push(9);
console.log(arr);// [1, 2, 3, 4, 5, 6, 9]
- pop() 删除数组的最后一个元素
var arr=[3,6,2,4,1,5];
arr.pop();
console.log(arr);// [3,6,2,4,1]
- shift() 把数组的第一个元素从其中删除
var arr=[3,6,2,4,1,5];
arr.shift();
console.log(arr);// [6, 2, 4, 1, 5]
- unshift() 在数组头部添加元素
var arr=[3,6,2,4,1,5];
arr.unshift(9);
console.log(arr);//[9, 3, 6, 2, 4, 1, 5]
- splice() 用于添加或删除数组中的元素,会改变原数组
参数1:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
参数2:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
参数3:可选。向数组添加的新项目。
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
arr.splice(2,3,"William")
console.log(arr);//["George", "John", "William", "Martin"] 将删除从 index 2 ("Thomas") 开始的三个元素,并添加一个新元素 ("William") 来替代被删除的元素
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
arr.splice(2,1);
console.log(arr); //["George", "John", "James", "Adrew", "Martin"] 将删除index 2 ("Thomas") 的元素
拼接
- concat() 连接数组
var arr1=["1","2","3"];
var arr2=["4","5","6"];
console.log(arr1.concat(arr2));//["1", "2", "3", "4", "5", "6"]
循环遍历
- forEach() 遍历,改变原数组
const arr=[1,2,3];
arr.forEach(function(val,index,arr){
arr[index]=val+1;
});
console.log(arr);//[2,3,4]
- map() 遍历,不改变原数组,数组中的元素为原始数组元素调用函数处理后的值
console.log([1,2,3].map(x => x + 1));//[2,3,4]
查找
- slice() 从已有的数组中返回选定的元素
参数1:可选。规定从何处开始选取。若为负数,从尾部开始选取。-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
参数2:可选。规定从何处结束选取。不包括该元素(包头不包尾)
var arr=[1,2,3,4,5];
var myarr=arr.slice(-3,-1);
console.log(myarr);//[3, 4]
- filter() 创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,不会对空数组进行检测
var arr=[10,11,12,13,14];
function checkNumber(num){
if(num<13){
return num;
}
}
var arrs=arr.filter(checkNumber);
console.log(arrs);// [10, 11, 12]
- every() 检测数组中所有元素是否都符合条件,通过函数提供,不是即为false
- some() 只要有一项满足就返回true
var arr=[10,11,12,13,14];
function checkNumber(num){
if(num<13){
return num;
}
}
var arr1=arr.every(checkNumber);
var arr2=arr.some(checkNumber);
console.log(arr1);//false
console.log(arr2);//true
- indexOf() 返回数组中某个指定的元素位置,从数组开头查找,没有就返回-1
- lastIndexOf() 从数组末尾查找
var arr=[1,2,3];
arr.indexOf(1);//0
arr.indexOf(5);//-1
arr.lastIndexOf(1);//0
arr.lastIndexOf(-3);//-1
- find 遍历数组,找到第一个符合回调函数的值,没有返回undefined
- findIndex 遍历数组,找到第一个符合回调函数的值的索引,没有返回-1
const arr=[1,2,3];
arr.find(function(value){
return value>0;
});//1
arr.findIndex(function(value){
return value>0;
});//0
其它
- reduce()
第一个参数:接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
第二个参数:调用回调函数的第一个参数,没有就默认数组的第一个值。
var numbers = [65, 44, 12, 4];
function getSum(total, num) {
return total + num;
}
console.log(numbers.reduce(getSum));//125
- fill 填充数组,改变原数组
第一个参数:用于填充数组的值
第二个参数:可选参数,表示填充的起始位置
第三个参数:可选参数,表示填充的结束位置,若省略该参数并且填写了第二个参数,则表示从起始位置开始一直到末尾的所有元素都被填充
[1,2,3].fill(5); // [5, 5, 5]
[1,2,3].fill(5,1); //[1, 5, 5]
[1,2,3].fill(5,0,2); //[5, 5, 3]
- Array.from() 将类似数组或可以迭代的对象转化为数组
- new set() 新的数据结构,无重复值(包括NAN)
let arr=[1,3,3,5,6,6,7]
console.log(Array.from(new Set(arr)))//输出[1,3,5,6,7],数组去重
-
扩展运算符...
let arr=[1,3,3,5,6,6,7];
let arr2=[9,...arr];
console.log(arr2); //[9, 1, 3, 3, 5, 6, 6, 7]
- flat 数组扁平化,按指定深度遍历数组,将数组和子数组中的元素集合合并为一个新数组返回。可以实现多维数组转一位数组。
参数:depth 可选结构深度,默认为1;使用Infinity 作为深度,展开任意深度的嵌套数组
会移除数组中的空项
var arr=[1,[2,3],[5,6]];
arr.flat(); //[1,2,3,5,6]
var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat(2); //[1, 2, 3, 4, 5, 6]
总结
增删、排序都会改变原数组。
es6新增方法有every、some 、forEach、filter 、indexOf、lastIndexOf、isArray、map、reduce、reduceRight等。