js入門(7)

jackerdf發表於2020-12-16

arguments

arguments 類陣列 存放所有的實參

類陣列 具有索引值,但是不能使用陣列下的api(push,pop,splice…)

filter 過濾

過濾

filter() 作用:過濾陣列中元素,返回新陣列存放過濾元素

引數 回撥函式

回參一item 陣列元素

回參二index 索引值

var res = arr.filter(function(item,index){

—> 是可以先修改元素,後篩選的

item arr 陣列中元素 index 索引值

​ console.log(item,index);

return 後面跟 條件表示式

res 接受滿足條件的所有元素;並存放在陣列中

return item.age>32

})

foreach

forEach()作用:遍歷陣列

回參一:陣列元素

回參二:索引值

arr.forEach(function(item,index){})

map

1.遍歷陣列 返回新陣列

新陣列中內容就是return 返回的內容

與過濾區別,過濾是根據條件篩選,返回條件表達返回值

item 陣列元素 index 是索引

newArr 存放return返回的內容

var newArr = arr.map(function(item,index){

​ return item

})

2.修改資料,重組資料,原來的arr沒變化

var res = arr1.map(function(item){

item = item * 2;

​ return item;

})

reduce

reduce() 沒有初始值

可以用reduce 實現累加等運算,並返回運算結果

var arr = [1,2,3,5]

var res = arr.reduce(function(accumulator,currentValue,currentIndex,sourcArray)

​ {

accumulator 記錄累計運算結果

accumulator 陣列索引的元,這個元素是運算的運算元

currentIndex 索引值,不是從0開始的

sourArray 原陣列

​ console.log(accumulator,currentIndex,currentValue,sourcArray);

​ return accumulator+currentValue;

​ })

注意 回參一 初始值為number型別 預設賦值 oders[0]

reduce(fun,param) 參二作用:給回參一sum賦初始值 改變預設orders[0]

var res = orders.reduce(function(sum,item){})

some

some() 檢查陣列中是否存在滿足條件的元素,滿足返回true;不滿足 返回false

var res = produce.some(function(item){})

陣列求最大值&最小值

求最大值 方式一

​ var max = arr[0];

​ for(var i=0;i<arr.length;i++){

​ var max = arr[0] // bug 永遠都是初始化–> 導致第一個數於最後一個陣列比較大小

​ max = Math.max(max,arr[i])

​ }

​ console.log(max);

求最大值 方法二

var max = arr.reduce(function(pre,next){

​ return Math.max(pre,next);

​ });

​ console.log(max);

方法三:利用排序

sort() 排序 引數 函式

arr1.sort(function(a,b){

a-b 升序 b-a 降序

注意 number型別排序,如果是字串,更具第一個字元的編碼值大小進行排序

return a-b

})

var max = arr1[arr.length-1]

​ console.log(arr1);

es6 很巧

​ var arr2 = [10,101,56,2,4,6,7,1];

​ var max1 = Math.max(…arr2);

​ console.log(max1);

陣列排序

選值排序 將定某個位置是最大值

用將定的最大值 與其他元素比較

在比較過程中進行,如果存在與比最大值還大的數,就進行換值處理

以此類推,做到大值在前 小值在後 實現降序效果

for(var i = 0;i<arr.length;i++){

​ arr[i] // 用arr[i] 與陣列中所有的元素

​ for(var j =0;j<arr.length;j++){

​ if(arr[i] > arr[j]){

​ 大值在前,小值災後

​ 問題:arr[i] 前 arr[j] 後

​ —> 換值處理

​ var tmp = arr[i];

​ arr[i] = arr[j];

​ arr[j] = tmp

​ }

​ }

​ }

​ console.log(arr);