数组的方法
1.push()添加到最后,返回添加后的数组,改变原数组
let arr =[1,2,3,4,5]
arr.push(6)
console.log(arr) =[1,2,3,4,5,6]
2.unshift()添加到最前面,返回添加后的数组;改变原数组
let arr =[1,2,3,4,5]
arr.unshift(6)
console.log(arr)=[6, 1, 2, 3, 4, 5]
3、shift()删除数组的第一个元素改变原数组
let arr =[1,2,3,4,5]
arr.shift()
console.log(arr)=[2,3,4,5]
4.pop():数组末尾移除最后一项,减少数组的 length 值
let arr =[1,2,3,4,5]
arr.pop()
console.log(arr)=[1,2,3,4]
5. sort():按升序排列数组项——即最小的值位于最前面,最大的值排在最后面。改变原数组
在排序时,sort()方法会调用每个数组项的 toString()转型方法,然后比较得到的字符串,以确定如何排序。即使数组中的每一项都是数值, sort()方法比较的也是字符串,因此会出现以下的这种情况:
let arr =[5,2,1,4,3]
let arr2=['C','D','A','B']
arr.sort()
arr2.sort()
console.log(arr)=[1, 2, 3, 4, 5]
console.log(arr2)=["A", "B", "C", "D"]
6.reverse():反转数组项的顺序 改变原数组
let arr =[1,2,3,4,5]
arr.reverse()
console.log(arr)=[5, 4, 3, 2, 1]
7.concat() :将参数添加到原数组中。这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。在没有给 concat()方法传递参数的情况下,它只是复制当前数组并返回副本。
let arr =[1,2,3,4,5]
let arr1=arr.concat(6,7)
console.log(arr)= [1, 2, 3, 4, 5] 原数组未被改变
console.log(arr1)=[1, 2, 3, 4, 5, 6, 7]
let arr2=arr.concat([6,[7,8]])
console.log(arr2)=[1, 2, 3, 4, 5, 6, Array(2)]
8.slice():返回从原数组中指定开始下标到结束下标之间的项组成的新数组。slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下, slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项。 原数组未被改变
let arr =[1,2,3,4,5]
let arr2=arr.slice(1,3)
let arr3=arr.slice(-4,-1)
console.log(arr2)=[2, 3]
console.log(arr3)=[2, 3, 4]
9.splice():能够操作原数组 1.参数起始值,增加或是删除的位置,2.指定删除元素的个数,3.插入的值
let arr =[1,2,3,4,5]
console.log(arr.splice(2,3))=[1,2]
console.log(arr.splice(0,0,6,7,8,9,10,11,13)) =[6, 7, 8, 9, 10, 11, 13, 1, 2, 3, 4, 5]
10.forEach 用于遍历数组,替代 for 循环 三个参数
- 数组当前项的值
- 数组当前项的索引
- 数组对象本身
let arr =[1,2,3,4,5]
arr.forEach((item,index,array)=>{
console.log(item+item,index,array);
})
2 0 (5) [1, 2, 3, 4, 5]
4 1 (5) [1, 2, 3, 4, 5]
6 2 (5) [1, 2, 3, 4, 5]
14 8 3 (5) [1, 2, 3, 4, 5]
14 10 4 (5) [1, 2, 3, 4, 5]
11.filter 过滤数组单元值,生成新数组
参数callback
用来测试数组的每个元素的函数。返回 true
表示该元素通过测试,保留该元素,false
则不保留。它接受以下三个参数:
element
数组中当前正在处理的元素。
index
可选正在处理的元素在数组中的索引。
array
可选 调用了 filter
的数组本身。
let arr =[1,2,3,4,5]
let arr2 = arr.filter((item,index,array)=>{
console.log(item,index,array);
return item>3
})
console.log(arr2)=[4, 5]
12.map 把每项都执行一遍,结果会生成新数组
let arr =[1,2,3,4,5]
let arr2 = arr.map((item,index,array)=>{
console.log(item,index,array);
return item * item
})
console.log(arr2)=[1, 4, 9, 16, 25]
13.join 数组单元素拼接成了符串 不改变原数组
var a = ['Wind', 'Rain', 'Fire'];
var myVar1 = a.join(); // myVar1的值变为"Wind,Rain,Fire"
var myVar2 = a.join(', '); // myVar2的值变为"Wind, Rain, Fire"
var myVar3 = a.join(' + '); // myVar3的值变为"Wind + Rain + Fire"
var myVar4 = a.join(''); // myVar4的值变为"WindRainFire"
14.indexOf 检索数组单元值 区分大小写
let arr =[1,2,3,4,'a']
console.log(arr.indexOf('a'));=4 //返回第一次找到的下标
15.find:返回数组中首次满足条件的元素
let arr =[1,2,3,4,5]
let arr2 = arr.find((item,index,array)=>{
console.log(item,index,array);
return item >1
})
console.log(arr2)= 2
16.findIndex:返回数组中首次满足条件的元素的索引值
let arr =[1,2,3,4,5]
let arr2 = arr.findIndex((item,index,array)=>{
console.log(item,index,array);
return item ===5
})
console.log(arr2)=4 //返回第一次找到元素的索引值
17.some:查找满足条件的元素,有一个满足即为true 都不满足为false
let arr =[1,2,3,4,5]
let arr2 = arr.some((item,index,array)=>{
console.log(item,index,array);
return item ===1
})
console.log(arr2)= true
18.every:查找满足条件的元素,都满足返回true,否者就是false
let arr =[1,2,3,4,5]
let arr2 = arr.every((item,index,array)=>{
console.log(item,index,array);
return item ===3
})
console.log(arr2)=false
19.reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。
callback (执行数组中每个值的函数,包含四个参数)
1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
2、currentValue (数组中当前被处理的元素)
3、index (当前元素在数组中的索引)
4、array (调用 reduce 的数组)
initialValue (作为第一次调用 callback 的第一个参数。)
var arr = [1, 2, 3, 4];
var sum = arr.reduce(function(prev, cur, index, arr) {
console.log(prev, cur, index);
return prev + cur;
},0) //注意这里设置了初始值
console.log(arr, sum);
打印结果:
0 1 0
1 2 1
3 3 2
6 4 3
[1, 2, 3, 4] 10