改变原数组的方法有:
栈方法
- push:数组末尾追加任意数量的元素,返回修改后数组的长度
- pop:数组末尾移除最后一项,返回移除的项
队列方法
- unshift:数组前端添加任意个项并返回新数组的长度
- shift:移除数组中的第一项并返回改该项
重排序方法
- sort:默认情况按照升序排列数组
- reserve:翻转数组
操作方法
- splice:向数组中部插入项。删除-两个参数(起始位置和要删除的项数)、插入-三个参数(起始位置、0(要删除的项数)、要插入的项)、替换-三个参数(起始位置,要删除的项数,要插入的任意数量项数)
不改变原数组的方法有:
操作方法
- concat:数组拼接,基于当前数组所有项创建一个新数组,添加到末尾
- slice:数组截取,返回起始和结束位置之间的项但不包括结束位置的项
位置方法
- indexOf:从数组的开头往后找,返回要查找项的位置。如果没找到则返回-1
- lastIndexOf:从数组的末尾开始向前找
迭代方法
- every:查询数组中的项是否全部满足条件,如果全部满足则返回true,否则false。类似于‘与或非’中的与
- some:查询数组中的项是否满足条件,如果有一项满足条件则返回true。类似于‘与或非’中的或
- filter:数组筛选,返回满足条件项组成的数组
- forEach:没有返回值,类似于‘for’
- map:返回函数调用结果组成的数组。如:数组中的每一项乘2
归并方法
- reduce:从数组的第一项开始,逐个遍历到最后,返回一个最终返回的值。如:数组求和,数组累积。数组中找最大项
- reduceRight:从数组的最后一项向前遍历
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Array</title>
</head>
<body>
<h1>数组方法总结</h1>
<h2>改变原数组的有:push pop unshift shift splice sort reverse </h2>
<h2>不改变原数组的方法有 concat slice includes indecOf filter map reduce forEach join</h2>
<script>
let arr1=[1,2,3,4]
// 数组的增删
let arr0=arr1
arr0.push(5)
console.log(arr0) //[1,2,3,4,5]
let arr_pop=arr0.pop()
console.log(arr0) //[1,2,3,4]
console.log(arr_pop) //5
arr0.unshift(9)
console.log(arr0) //[9,1,2,3,4]
arr0.shift()
console.log(arr0) //[1,2,3,4]
arr0.splice(1,2)
console.log(arr0) //[1,4]
// 数组排序
let arr2=[5,2,9,1,7]
let arr_sort=arr2.sort()
console.log(arr_sort) //[1,2,5,7,9]
// 数组翻转
let arr3=[4,8,6]
let arr_res=arr3.reverse()
console.log(arr_res) //[6,8,4]
// splice删除
let arr6=[1,2,3,4,5,6]
let arr_s=arr6.splice(1,3)
console.log(arr6) //[1,5,6]
console.log(arr_s)//[2,3,4]
// splice插入
let arr_p=arr6.splice(2,0,9,"red")
console.log(arr6)//[1, 5, 9, 'red', 6]
console.log(arr_p)//[]
// splice替换
let arr_l=arr6.splice(1,2,"blue")
console.log(arr6)//[1, 'blue', 'red', 6]
console.log(arr_l)//[5,9]
console.log('-----------------分割线------------------');
// 数组拼接
let arr4=[9,2,8]
let arr5=[7,9,5,0]
let arr_cat=arr5.concat(arr4)
console.log(arr_cat) //[7, 9, 5, 0, 9, 2, 8]
// 数组截取
let arr_slice=arr5.slice(1,2)
console.log(arr_slice) //[9]
// 位置方法
let arr_index=arr5.indexOf(9)
console.log(arr_index) //1
let arr_index1=arr5.indexOf(3)
console.log(arr_index1) //-1
// 迭代方法
// every遍历数组直到找到不满足条件的元素或者遍历完数组
// 检查数组中的元素是否均大于3
let all=arr5.every(function(item){
return item>3
})
console.log(all) //false
// some遍历数组中是否大于3的元素
let s=arr5.some(item=>item>3)
console.log(s) //true
// filter数组筛选
// 返回一个所有值均大于3的数组
let fil=arr4.filter(item=>item>3)
console.log(fil)//[9,8]
// forEach没有返回值,与for类似
// 打印数组中的每一个元素
arr4.forEach(item=>{
console.log(item)
})//9 2 8
// map返回每次调用的结果组成的数组
let double=arr4.map(function(currentValue){
return currentValue*2
})
console.log(double)//[18,4,6]
// 归并方法,数组求和-reduce
let sum=arr4.reduce(function(prev,cur){
return prev+cur
})
console.log(sum)//19
// 累积
let pruduct=arr4.reduce((prev,cur)=>prev*cur,1)
console.log(pruduct) //144
// 数组中的最大值
let max=arr4.reduce((prev,cur)=>Math.max(prev,cur),arr4[0])
console.log(max)//9
</script>
</body>
</html>