改变元数组的方法:push,pop,unshift,shift,sort,reverse,splice
不改变原数组的方法:findIndex,concat,join,forEach,map,filter, slice, reduce
1.数组简单方法push,pop,unshift,shift
//push:在数组末尾追加一个元素,返回值是追加完后的数组长度
// const arr = [1,2,3,4]
// arr.push(6)
// console.log(arr); //[1,2,3,4,6]
//pop:删除数组末尾的第一个元素,返回值是删除的元素
// const arr =[1,2,3,4,5]
// arr.pop()
// console.log(arr); //[1,2,3,4]
//unshift:在数组最前面添加一个元素,返回值是追加完后的数组长度
// const arr = [1,2,3,4,5]
// arr.unshift(0)
// console.log(arr); //[0,1,2,3,4,5]
//shift:删除数组最前面的一个元素,返回值是删除的元素
// const arr = [1,2,3,4,5]
// arr.shift()
// console.log(arr); //[2,3,4,5]
2.splice截取数组
//splice(从哪一个索引开始,截取几个元素,替换元素的内容)改变原数组
const arr = [1,2,3,4,5]
//1.删除
const arr1 = arr.splice(1,1,6)
console.log(arr); //[1,6,3,4,5]
console.log(arr1); //返回值为删除的元素[2]
//2.增加,截取0个元素
const arr2 = arr.splice(1,0,7)
console.log(arr); //[1,7,6,3,4,5]
3.reverse翻转数组
//reverse翻转数组(倒序)(对原数组有影响)
const arr = [1,2,3,4]
arr.reverse()
console.log(arr);
4.sort数组排序
//sort数组排序,可以实现正序,逆序(对原数组有影响)
//函数方法正序:
// const arr = [1,5,3,8,6,9,4]
// arr.sort(function(a,b){
// return a-b
// })
// console.log(arr);
// 函数方法逆序:
const arr = [1,5,3,8,6,9,4]
arr.sort(function(a,b){
return b-a
})
console.log(arr);
5.concat数组拼接
//concat数组拼接(不影响原数组)
const arr1 = [1,2,3,4,5]
const arr2 = [6,7,8]
const newArr = arr1.concat(arr2)
console.log(newArr);
6.join数组转换字符串
//join:数组转换为字符串,不改变原数组,直接返回链接好的字符串
//join('要以什么内容链接')
var arr = [1,2,3,4]
var str = arr.join(',')
console.log(str);
7.indexOf返回数组中某元素的索引
//indexOf返回数组中某元素的索引,元素不存在则返回-1
var arr = [1,2,3,5,6,4]
var index1 = arr.indexOf(4)
var index2 = arr.indexOf(9)
console.log(index1); //5
console.log(index2); //-1
8.forEach遍历数组
//arr.forEach(function (item, index, arr) {}),没有返回值,返回结果为undefined
// item 就是数组中的每一项
// index 就是数组的索引
// arr 就是原始数组
var arr = [1,2,3,4,5,6]
arr.forEach(function(item,index,arr){
console.log('数组的第 ' + index + ' 项的值是 ' + item + ',原始数组是', arr)
})
9.map映射
//arr.map(function (item, index, arr){})
//有返回值,可以return出来一个length和原数组一致的数组
// item 就是数组中的每一项
// index 就是数组的索引
// arr 就是原始数组
var arr = [1,2,3,4,5,6]
var newArr = arr.map(function(item,index,arr){
return item * 10
//如果是判断的话则返回true或者false
})
console.log(newArr); //[10,20,30,40,50,60]
console.log(arr); //[1,2,3,4,5,6]
10.filter筛选数组
//filter:把原始数组中满足条件的筛选出来,组成一个新的数组返回
//arr.filter(function (item, index, arr){})
// item 就是数组中的每一项
// index 就是数组的索引
// arr 就是原始数组
var arr = [1,2,3,4,5,6]
var newArr = arr.filter(function(item,index,arr){
return item > 1
})
console.log(newArr);
11.every和some
//every:数组中每一个都要满足条件则返回true,否则返回false
//arr.every(function (item, index, arr){})
// item 就是数组中的每一项
// index 就是数组的索引
// arr 就是原始数组
var arr = [1,2,3,4,5,6]
console.log(
arr.every(function(item,index,arr){
return item > 0
//如果是判断的话则返回true或者false
})
);
//some:数组中元素只要有一项满足条件则返回true,全部不满足返回false
//arr.some(function (item, index, arr){})
// item 就是数组中的每一项
// index 就是数组的索引
// arr 就是原始数组
var arr = [1,2,3,4,5,6]
console.log(
arr.some(function(item,index,arr){
return item > 5
//如果是判断的话则返回true或者false
})
);
12.find寻找数组元素
//find:会返回数组中符合条件的第一个值,在数组中找到的话则不会往下执行
//如果数组中没有符合条件的值则返回undefined
var arr = [1,2,3,4]
var a = arr.find(function(item,index,arr){
return item > 1
})
console.log(a); //[2,3,4]
13.slice截取数组元素
//slice(开始索引,结束索引)包前不包后,传一个参数就是从开始到结束,不影响原数组
const arr = [1,2,3,4,5,6]
const arr2 = arr.slice(2,3)
console.log(arr); //[1,2,3,4,5,6]
console.log(arr2); //[3]
14.reduce
//数组reduce方法累计运算
//reduce(function(total,value,index){},初始值)
//total:计算结束后的返回值
//value:当前元素
//index:当前元素索引
//当没有设置初始值的时候,可以看出total取值是arr[0]
//当设置初始值的时候,从数组下标为0的开始遍历
var arr = [1,2,3,4,5]
var sum = arr.reduce(function(total,value,index){
console.log(total,value,index)
return total + value
//一定要return,值是下一次total的初始值
},0)
console.log(sum);
//拼接数组中的字符串
var arr1 = ['刘','浩','丁','嘉','敏']
var str = arr1.reduce(function(total,value){
return total += value
},'')
console.log(str);
//join方法
var str1 = arr1.join('')
console.log(str1);
//求对象中每个人年龄的和
var arr2 = [
{
name:"刘浩",
age:18
},
{
name:'丁嘉敏',
age:20
}
]
var num = arr2.reduce(function(total,value){
return total += value.age
},0)
console.log(num);
// 计算数组中每个元素出现的次数
let arr7 =['红','黄','黑','黄','蓝','红']
let num1 = arr7.reduce((pre,cur)=>{
if(cur in pre){
pre[cur]++
}else {
pre[cur] = 1
}
return pre
},{})
console.log(num1) //{红: 2, 黄: 2, 黑: 1, 蓝: 1}