數組的常見操作
let arr = [1,4,5,7,9];
1. 判斷數組中某個元素是否存在
para1:待判斷的元素
返回值:元素在數組中的索引,如果不存在,返回-1
let isExist = arr.indexOf(4) !=-1;
2、向數組中追加元素
para1:要追加的元素
返回值是數組的長度;
arr.push(100);
3、在數組的開頭添加元素
para1:待添加的元素
返回值是數組的長度
場景:下拉刷新
arr.unshift(-2);
4、刪除數組結尾的元素
無參數
返回值是刪除的元素
let e= arr.pop();
console.log(e);//100
5、刪除數組開頭的元素
返回值是刪除的元素
arr.shift();
6、從數組中刪除一些元素,插入一些元素;
para1:開始索引
para2:刪除元素的數目(開始索引是刪除的起始位置)
para3...:要插入的元素(開始索引也就是插入的位置,可以插入多個)
場景:用新元素替換舊數組的一個元素
返回值是被刪除的元素構成的數組;
console.log(arr)
let de= arr.splice(1,2,1000,200);
可以刪可以加
7、獲取一個子數組
para1:開始位置;包含開始
para2:結束位置;不包含結束 [start,end);
返回值是子數組;
let s= arr.slice(1,3);
console.log(s);
8、數組的拼接
console.log(arr);
let arr2=[-1,-2,90];
para1.....:待拼接的數組(可以拼接多個)
返回值拼接之後的新數組;(arr)原數組不受影響
let c= arr.concat(arr2);
console.log(c);
console.log(arr);
弱類型語言可以多個參數,強類型的參數是固定的
9、數組的遍歷
參數: 元素,索引,所在的數組
para1:操作函數
para1:元素
para2:索引
para3:元素所在的數組
arr.forEach((item,index,array)=>{
console.log(item)
console.log(index)
console.log(array)
// 想要進行的操作:無明確要求
})
10、數組的映射
para1:操作函數
para1:元素
para2:索引
para3:元素所在的數組
返回值是該元素映射的新元素(一一對應)
返回值是映射得到的新數組
let m= arr.map((item,index,array)=>{
return item*3;
})
console.log(m);
let stus = [
{name:'lucy',age:20},
{name:'lily',age:21},
{name:'小蘭',age:20},
]
let stuNames = stus.map((item)=>{
return item.name;
})
console.log(stuNames);
11、數組的聚合
para1:操作函數
para1:舊值;上一次聚合的結果;
para2:當前元素
para3:當前元素的索引
para4:當前元素所在的數組
返回值:該次聚合的結果
para2:聚合時使用的初值(0加,1乘)
返回值是 聚合後的數據
let rd=arr.reduce((preValue,curValue,curIndex,array)=>{
console.log('1111111111111');
// console.log(preValue);
// console.log(curValue);
console.log(curIndex);
// console.log(array);
return preValue+curValue;
},0)
console.log(rd);
// [1,10000,200,7,9]
// 初值:0
// 第一次 0 1 0 1
// 第二次 1 10000 1 10001
// 第三次 10001 200 2 10201
// 第四次 10201 7 3 10208
// 第五次 10208 9 4 10217
// 返回值是 10217
// 計算每個字母出現的頻率
let str ='fsadfasdfagagajkgnahjgasdjfajsfjk';
let strArr=str.split('');
console.log(strArr);
let sr=strArr.reduce((preValue,curValue,curIndex,array)=>{
if(!preValue[curValue]){
preValue[curValue]=0;
}
preValue[curValue] +=1;
console.log(preValue);
return preValue;
},{})
console.log(sr);
12、數組過濾
para1:操作函數
para1:元素
para2:索引
para3:元素所在的數組
返回值 true/false ; true:滿足條件;false:不滿足條件
返回值是 滿足過濾條件的新數組
let fa = arr.filter((item,index,array)=>{
return item%2==0;
})
console.log(fa);
13、數組排序
para1:操作函數
para1:數組中一個元素
para2:數組中另一個元素
返回值是true/false;
返回值排序後的新數組
let sortedArr=arr.sort((num1,num2)=>{
return num1>num2;//升序
// return num1<num2;//降序
});
console.log(sortedArr);
let goods=[
{name:"裙子",price:37,sales:10000},
{name:'裙子',price:100,sales:100},
{name:'裙子',price:340,sales:102},
{name:'裙子',price:734,sales:16},
{name:'裙子',price:1235,sales:10},
{name:'裙子',price:3214,sales:6},
{name:'裙子',price:777,sales:60},
]
let sortedGoods=goods.sort((obj1,obj2)=>{
console.log(obj1.price);
return obj1.price<obj2.price;
})
console.log(sortedGoods);
14、判斷一個變量是不是數組
返回值是true或者false
let a=1;
// let a=[1,2];
console.log(Array.isArray(a)); //Array是一個類
console.log(a instanceof Array);//instanceof 關鍵字
數組中最大的元素
let arrt1=[1,5,6,43,99,42,3];
// 第一種方法。數組中不能有重複元素,推薦第二種
let sor1=arrt1.sort((num,num3)=>{
return num>num3
})
console.log(sor1);
sort=sor1[0];
sort2=sor1[sor1.length-1];
console.log(sort);
console.log(sort2);
// 第二種方法
let num4;
let str1=arrt1.forEach((item)=>{
num4=num4>item ? num4 : item
return num4
})
console.log(num4)