- List item
js数组的创建及常用数组处理方法
- 一、js数组创建方式
- 一、js常用数组方法
- 1、Array.push()
- 2、Array.pop()
- 3、Array.shift()
- 4、Array.unshift()
- 5、Array.splice()
- 6、Array.slice()
- 7、Array.join()
- 8、Array.reverse()
- 9、Array.sort()
- 10、Array.forEach()
- 11、Array.map()
- 12、Array.filter()
- 13、Array.every()
- 14、Array.some()
- 15、Array.find()
- 16、Array.reduce()
- 17、Array.concat()
- 18、Array.indexOf()
- 19、Array.lastIndexOf()
一、js数组创建方式
1、 通过Array构造函数的方式创建数组
let arr = new Array()
2、使用数组字面量的方式
let arr =[]
3、创建一个长度为n的数组
let arr =new Array(n)
4、创建一个长度为n的数组,元素为t的元素
let arr =new Array(n).fill(t)
一、js常用数组方法
1、Array.push()
push方法将元素添加到数组末尾,并返回该数组的新长度
let arr = [1,2,3,4,5];
let length = arr.push(6);
console.log(arr,length);
//arr=[1,2,3,4,5,6],length=6
2、Array.pop()
pop方法将数组末尾元素移除,并返回该元素的值
let arr = [1,2,3,4,5];
let a = arr.pop(6);
console.log(arr,a);
//arr=[1,2,3,4],a=5;
3、Array.shift()
shift方法将数组中的第一个元素移除,并返回该元素的值
let arr = [1,2,3,4,5];
let a = arr.shift();
console.log(arr,a);
//arr=[2,3,4,5],a=1;
4、Array.unshift()
shift方法添加一个或多个元素于数组开头,并返回该数组新长度
let arr = [1,2,3,4,5];
let a = arr.unshift(5,2,0);
console.log(arr,a);
//arr=[5, 2, 0, 1, 2, 3, 4, 5],a=8;
5、Array.splice()
splice方法参数按序依次代表开始的索引值、删除的个数、新增的元素。可用于添加、删除、替换数组中的元素,并返回删除的内容。如下:
//删除
let arr = [1,2,3,4,5];
let a = arr.splice(1,2);
console.log(arr,a);
//arr=[1,4,5],a=[2,3];
//新增
let arr = [1,2,3,4,5];
let a = arr.splice(1,0,5,2,0);
console.log(arr,a);
//arr=[1, 5, 2, 0, 2, 3, 4, 5],a=[];
//替换
let arr = [1,2,3,4,5];
let a = arr.splice(1,1,5,2,0);
console.log(arr,a);
//arr=[1, 5, 2, 0, 3, 4, 5],a=[2];
6、Array.slice()
slice方法用于获取数组中某个或某段元素,通过其开始和结束的两个参数作为数组索引确定取值区间,包含开始索引代表元素不包含结尾索引代表元素,且不会影响原数组。
let arr = [1,2,3,4,5];
let a = arr.slice(1,3);
console.log(arr,a);
//arr=[1,2,3,4,5],a=[2,3];
7、Array.join()
join方法用于将数组转换成字符串,并用join方法中所传参数连接,未传参数,默认用逗号连接
let arr = [1,2,3,4,5];
let a = arr.join('~');
console.log(arr,a);
//arr=[1,2,3,4,5],a='1~2~3~4~5';
8、Array.reverse()
reverse方法用于将数组元素反转
let arr = [1,2,3,4,5];
let a = arr.reverse();
console.log(arr,a);
//arr = [5, 4, 3, 2, 1],a = [5, 4, 3, 2, 1];
9、Array.sort()
sort方法用于对数组进行排序,其参数非必填,默认情况下会调用数组中每一项的toString()方法,然后按照unicode编码进行排序,如果数组中存在undefined元素则排到数组末尾。如果数组中的元素存在两位以上的元素,他的排序就可能存在问题。如:
let arr = [3,12,9,21,7,18];
arr.sort();
console.log(arr);
//arr = [12,18,21,3,7,9]
因此,为了避免这种情况的出现,我们通常会给sort方法进行传参,参数为排序函数
let arr = [3,12,9,21,7,18];
arr.sort((a,b)=>a-b);//升序 [3,7,9,12,18,21]
arr.sort((a,b)=>b-a);//降序 [21,18,12,9,7,3]
10、Array.forEach()
forEach用于遍历数组,其存在三个参数,分别为当前项,索引值,原数组,其作用在于替代for循环,不存在返回值或者说返回值为undefined
let arr1 = [1,2,3,4,5];
arr1.forEach((item,index,arr)=>{
console.log(item,index)
});
11、Array.map()
map将原数组数据进行对应的映射后返回一个新数组,并且不改变原数组数据,存在三个参数,分别为当前项,索引值,原数组
let arr1 = [1,2,3,4,5];
let arr2 = arr1.map(item=>item*2);
console.log(arr1,arr2)
//arr1 = [1,2,3,4,5],arr2=[2,4,6,8,10]
12、Array.filter()
filter方法主要用于筛选数组中出符合条件的数据,跟map一样,都不改变原数组数据,并且返回一个新数组,存在三个参数,分别为当前项,索引值,原数组
let arr1 = [1,2,3,4,5];
let arr2 = arr1.filter(item=>item>2);
console.log(arr1,arr2)
//arr1 = [1,2,3,4,5],arr2=[3,4,5]
13、Array.every()
every方法主要用于判断数组中的元素是否全部满足要求,返回值为布尔值,全部满足为true,否则为false,不影响原数组,存在三个参数,分别为当前项,索引值,原数组
let arr1 = [1,2,3,4,5];
let flag= arr1.every(item=>item>0);
console.log(arr1,flag)
//arr1 = [1,2,3,4,5],arr2=true
14、Array.some()
every方法主要用于判断数组中是否存在满足要求的元素,不影响原数组,返回值为布尔值,存在为true,不存在为false,存在三个参数,分别为当前项,索引值,原数组
let arr1 = [1,2,3,4,5];
let flag= arr1.some(item=>item>3);
console.log(arr1,flag)
//arr1 = [1,2,3,4,5],flag=true
15、Array.find()
find方法主要用来获取第一项满足条件的元素,不影响原数组,返回值为第一项满足条件的元素值,若不存在满足条件的元素,则返回underfunded,存在三个参数,分别为当前项,索引值,原数组
let arr1 = [1,2,3,4,5];
let flag= arr1.find(item=>item>3);
console.log(arr1,flag)
//arr1 = [1,2,3,4,5],flag=4
16、Array.reduce()
reduce 接受两个参数,回调函数及初始值。reduce方法为数组中的每一个元素依次执行回调函数,回调函数接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 方法的数组。一般可用于数组元素求和,多维数组转化为一维数组等。
//数组元素求和
let arr1 = [1,2,3,4,5];
//pre代表其累加值,第一次遍历是pre取reduce函数第二个参数为初始值,cur为当前遍历值
let add= arr1.reduce((pre,cur)=>{
return pre+cur;
},0);
console.log(arr1,add)
//arr1 = [1,2,3,4,5],arr2=15
//多维数组转化为一维数组
let arr = [0,[1,2],[3],[4,[5,6,[7]]]];
const newArr = function(arr){
return arr.reduce((pre,cur)=>{
return pre.concat(Array.isArray(cur)?newArr(cur):cur);
},[]);
}
console.log(arr,newArr(arr))
//arr =[0,[1,2],[3],[4,[5,6,[7]]]], newArr(arr)=[0, 1, 2, 3, 4, 5, 6, 7];
17、Array.concat()
concat用于数组与数组,数组与元素的连接,由数组调用,将调用方法的数组与方法中传入的参数连接起来返回一个新数组,不影响其他数组
let arr = [0,1,2,3]
let result = arr.concat(4)
let result1 = arr.concat([3,4,5])
console.log(result,result1)
//result = [0,1,2,3,4],result1 = [0,1,2,3,3,4,5]
18、Array.indexOf()
indexOf方法主要用于查找数组是否存在某个元素,并返回数组中第一个该元素的下标,如果数组中不存在该元素,则返回-1
let arr = [1,2,3,4]
let index = arr.indexOf(2)
let index1 = arr.indexOf(5)
console.log(index,index1)
//index = 1,index1 = -1
19、Array.lastIndexOf()
lastIndexOf方法用法与indexOf类似,两者不同之处在于indexOf返回的是第一个符合条件的元素的下标,lastIndexOf返回的是最后一个符合条件的元素的下标
let arr = [1,2,3,4,2,3]
let index = arr.lastIndexOf(2)
let index1 = arr.lastIndexOf(5)
console.log(index,index1)
//index = 4,index1 = -1