一、filter
filter用於對數組進行過濾。
它創建一個新數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素。
注意: filter() 不會對空數組進行檢測。
注意: filter() 不會改變原始數組。
1.語法
Array.filter(function(currentValue, indedx, arr), thisValue)
第一個參數是函數
這個回調函數的返回值是一個boolean值
當檢查元素符合過濾條件的時候會返回true,函數內部會自動將這個元素加入新數組中
當不符合條件時會返回false,函數內部會過濾掉這個元素
例子1:返回數組中小於100的元素
const nums = [10, 20, 50, 101, 222,40] let newNums = nums.filter(function (n) { return n < 100 }) console.log(newNums); //[10, 20, 50, 40]
例子2:篩選空格
const arr = ['0',1,2,3,4,"",5,1,4,'0',""]; let arr_filter = arr.filter(function(x){ return x;/* 篩選空格 */ }) console.log(arr_filter)
例子3:去除Array的重復元素
const arr_repeat = ['A', 'B', 'A', 'B', 'B', 'C', 'A', 'D', 'C'] let arr_filter = arr_repeat.filter(function (el, index, self) { // console.log(self.indexOf(el)) // console.log('index',index)
return self.indexOf(el) == index })
console.log(arr_filter) //["A", "B", "C", "D"]
去除重復元素依靠的是indexOf總是返回某個元素第一次出現的位置,后續的重復元素位置index與indexOf返回的位置不相等,因此被filter濾掉了。
二、map
map() 方法:原數組中的每個元素調用一個指定方法后,返回返回值組成的新數組。
const nums = [2, 4, 6, 8, 10] newNums = nums.map(function (n) { return n*2 }) console.log(newNums)
三、reduce
reduce函數對數組中的所有內容進行匯總。
reduce()把一個函數作用在這個Array的[x1, x2, x3...]上,這個函數必須接收兩個參數,reduce()把結果繼續和序列的下一個元素做累積計算,其效果就是:
[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)
語法:
arr.reduce(callback,[initialValue])
第一個參數是回調函數
這個回調函數可以接收四個參數
previousValue (第一項的值或者上一次疊加的結果值,或者是提供的初始值(initialValue))
currentValue (數組中當前被處理的元素)
index (當前元素在數組中的索引)
array (數組本身)
initialValue (作為第一次調用 callback 的第一個參數,可以控制返回值的格式)不傳默認為0
例子1:數組求和
const arr = [1, 2, 3, 4, 5] let sum = arr.reduce(function (pre, cur) { console.log(pre, cur) //輸出的是第一項的值或上一次疊加的結果,正在被處理的元素
return pre + cur }) console.log(sum) //15
1 2
3 3
6 4
10 5
15
例子2:不要使用JavaScript內置的parseInt()函數,利用map和reduce操作實現一個string2int()函數
思路:1.先把字符串13579先變成Array——[1, 3, 5, 7, 9]
2.再利用reduce()就可以寫出一個把字符串轉換為Number的函數。
const s = '13579'
function string2int(s) { let arr = s.split('').map(function(x){ return +x; }) console.log(arr) //[1, 3, 5, 7, 9]
let arr_reduce = arr.reduce(function(prev,res){ console.log(prev, res) return prev*10+res; }) console.log(arr_reduce) //13579
return arr_reduce } string2int(s)
1.split() 方法用於把一個字符串分割成字符串數組。
格式:
stringObject.split(separator,howmany)
separator 必需。字符串或正則表達式,從該參數指定的地方分割 stringObject。如果是空字符串”,按每個單詞分割
howmany 可選。該參數可指定返回的數組的最大長度。如果設置了該參數,返回的子串不會多於這個參數指定的數組。如果沒有設置該參數,整個字符串都會被分割,不考慮它的長度。
2.parsenInt和+
js提供了parseInt()和parseFloat()兩個轉換函數。前者把值轉換成整數,后者把值轉換成浮點數。
在字符串前面輸入‘+’也能將字符轉化成數值,輸出如下:
1 3
13 5
135 7
1357 9
13579
例子3:求一串字符串中每個字母出現的次數
暫時不會
參考:
https://www.cnblogs.com/jianxian/p/10582683.html
https://blog.csdn.net/baidu_36065997/article/details/79079880
