数组处理是开发中经常用到的,今天总结一下日常常用的数组方法,包括数组的增删改,循环操作。
Array.push() 将一个或多个元素添加到数组的末尾,然后返回数组的新长度,会改变原数组。
let myArray = [2,4,5,7,9,12,14];
myArray.push(20);
console.log(myArray);//[2,4,5,7,9,12,14,20]
Array.unshift() 将一个或多个元素添加到数组的开头并返回数组的新长度,会改变原数组。
let myArray = [2,4,5,7,9,12,14];
myArray.unshift(0);
console.log(myArray);//[0, 2,4,5,7,9,12,14]
Array.pop() 删除数组的最后一个元素,会改变原数组。
let myArray = [2,4,5,7,9,12,14];
myArray.pop();
console.log(myArray);//[2,4,5,7,9,12]
Array.shift() 删除数组的第一个元素,会改变原数组。
let myArray = [2,4,5,7,9,12,14];
myArray.shift();
console.log(myArray);//[4,5,7,9,12,14]
Array.concat() 可以将两个或多个数组合并为一个新数组。不会改变原数组,而是创建一个新数组。
let myArray = [2,4,5,7];
let newArray = [1,2,3];
let result = myArray.concat(newArray);
console.log(result);//[2,4,5,7,1,2,3]
Array.join() 接受一个数组并连接数组的内容,默认用逗号分隔。结果放在一个字符串中。如果要使用逗号的替代方法,可以指定分隔符。
let myArray = [2,4,5,7,9,12,14];
myArray.join();//"2,4,5,7,9,12,14"
myArray.join(' ');//"2 4 5 7 9 12 14"
Array.sort() 数组排序,默认情况下,数组按升序排序,会改变原数组。
let myArray = [12, 55, 34, 65, 10];
let a = myArray.sort((a,b) => a - b); //升序排序
let b = myArray.sort((a,b) => b - a); //降序排序
console.log(a);//[10, 12, 34, 55, 65]
console.log(b);//[65, 55, 34, 12, 10]
Array.reverse() 用于反转数组中元素的顺序。这不会反转数组的内容,而只会反转顺序本身,会改变原数组。
let myArray = [2,4,5,7,9,12,14];
myArray.reverse()
console.log(myArray);//[14, 12, 9, 7, 5, 4, 2]
Array.splice() 用于插入、删除或替换数组的元素。通过指定要删除的元素的索引和数量,它修改了数组。可传多个参数,参数1是索引,参数2,是几个元素,参数3,4…表示替换,会改变原数组
let myArray = [2,4,5,7,9,12,14];
myArray.splice(2, 3);//删除从下标2开始3个元素
console.log(myArray);//[2, 4, 12, 14]
let myArray = [2,4,5,7,9,12,14];
myArray.splice(2, 3, 1, 2, 3); // 把下标2开始3个元素替换为1,2,3
console.log(myArray);//[2, 4, 1, 2, 3, 12, 14]
Array.slice() :通过索引位置获取新的数组,不会改变原数组,返回一个新数组。参数 slice(start,end)
start - 必填;开始索引;如果是负数,则表示从数组尾部开始算起(-1指最后一个元素,-2 指倒数第二个元素)。
end - 可选;结束索引;如果不填写该参数,默认到数组结尾;如果是负数,则表示从数组尾部开始算起
//没有传递结束索引参数
let myArray = [2,4,5,7,9,12,14];
let newArray= myArray.slice(2);
console.log(myArray);//[2, 4, 5, 7, 9, 12, 14]
console.log(newArray);//[5, 7, 9, 12, 14]
//有传递结束索引参数
let myArray = [2,4,5,7,9,12,14];
let newArray= myArray.slice(1, 3);
console.log(newArray);//[4, 5]
Array.indexOf() 查找数组中的元素首次出现的位置,并返回它所在的位置,没用则返回-1,与字符串一致
var myArray = [1,2,3];
console.log(arr.indexOf(1));//0
console.log(arr.indexOf(2));//1
console.log(arr.indexOf(4));//-1
数组几种常用的循环方法包含ES6新增方法
Array.forEach() 对数组循环,类似于使用“for”循环将函数应用于数组
let myArray = [1,2,3,4]
myArray.forEach(function(item){
console.log(item);//依次打印1 2 3 4
});
Array.map() 对数组中的每个元素执行一个函数,并将结果放入一个新数组中。有返回结果,但不会改变原来的数组
与forEach()区别 :会返回一个长度与原来数组一样的新数组
let myArray = [2,4,5,7,9,12,14];
let newArray= myArray.map(function(item){
return item * 2;
});
console.log(newArray);[4,8,10,14,18,24,28]
console.log(myArray);[2,4,5,7,9,12,14]
Array.filter() 过滤元素,返回一个新数组。有返回结果,但不会改变原来的数组
let myArray = [2,4,5,7,9,12,14];
let newArray= myArray.filter((number) =>{
return number > 9;
});
console.log(newArray);//[ 12, 14]
Array.some() 用于检测数组中的元素是否有满足指定条件,如果有一个元素满足条件,则返回true , 剩余的元素不会再继续,没用元素满足条件,则返回false
var myArray = [3,6,9,12];
let a = myArray.some((item)=>{
return item > 9;
})
let b = myArray.some((item)=>{
return item == 1;
})
console.log(a ,b);//true,false
Array.every() 用于检测数组中的所有元素是否满足指定条件,如果所有元素都满足条件,则返回true , 只要有一个元素不满足,则返回false,剩余的元素不会再继续
var myArray = [3,6,9,12];
let a = myArray.every((item)=>{
return item > 9;
})
let b = myArray.every((item)=>{
return item > 1;
})
console.log(a ,b);//false,true
Array.find() 返回数组满足条件的第一个元素的值,如果没有符合条件的元素则返回 undefined,有则返回结果,但不会改变原来的数组
let myArray = [1, 2, 3, 4, 5];
let a = myArray.find(item => item > 3);
let b = myArray.find(item => item == 0);
console.log(a,b); //4,undefined
待更新,也欢迎补充~~