俗話說(shuō),好記性不如爛筆頭,碼代碼的過(guò)程中經(jīng)常會(huì)用到有關(guān)數(shù)組計(jì)算的方法,本人記性太差,每次使用到相應(yīng)的方法都是大腦一片空白,今天借著早下班這個(gè)空檔羅列一下這些方法的使用過(guò)程。
1. forEach? 遍歷數(shù)組
? ? ? ? let arr = [1,2,3]
? ? ? ? let result = arr.forEach(a => {
? ? ? ? ? ? return a + 1
? ? ? ? })
輸出結(jié)果如下:
? ? ? console.log(result) //undefind? 說(shuō)明forEach只是數(shù)組上的一個(gè)函數(shù)不改變也不會(huì)產(chǎn)生新的數(shù)據(jù)
? ?console.log(arr) //[1,2,3]
2. map 遍歷數(shù)組
let arr =[1,2,3]
let c=arr .map((i,ndx,arr)=>{
? ? console.log(i,ndx,arr)
? ? return i*2
})
console.log(arr)// [1,2,3] 原數(shù)組沒(méi)改變
console.log(c)// [2,4,6]? 新數(shù)組
3. filter 遍歷數(shù)組
let arr =[1,2,3]
let c2=arr.filter((i,ndx,arr)=>{?
? ? return i>=2
})
console.log(arr)// [1,2,3] 原數(shù)組沒(méi)改變
console.log(c2)// [2,3] 篩選出滿足條件的新數(shù)組
4. find 遍歷數(shù)組
let arr =[1,2,3]
let c2=arr.find((i,ndx,arr)=>{?
? ? return i>=2
})
console.log(arr)// [1,2,3] 原數(shù)組沒(méi)改變
console.log(c2)// 2 篩選出滿足條件的數(shù)據(jù)即中斷
以上四種方法都是數(shù)組的遍歷方法 根據(jù)不同使用環(huán)境,可以自行選擇
除了以上方法,這里再加一個(gè)數(shù)組降維的方法(flat),這個(gè)在工作中也是會(huì)經(jīng)常用到
let arr=[1,2,3,[4,5,6],7]
let c=arr.flat();// 可傳參 降維級(jí)別
console.log(arr)// [1,2,3,[4,5,6],7] 不改變?cè)瓟?shù)組
console.log(c)// [1, 2, 3, 4, 5, 6, 7] 降維后新數(shù)組
下面由filter方法衍生幾個(gè)常用的數(shù)組求交集、并集、補(bǔ)集、差集
? ? let arr1 = [1,2,3,4,5],
? ? ? arr2 = [5,6,7,8,9];
// 交集
let intersection = arr1.filter(function (val) { return arr2.indexOf(val) > -1 })
// 并集
let union = arr1.concat(arr2.filter(function (val) { return !(arr1.indexOf(val) > -1) }))
// 補(bǔ)集 兩個(gè)數(shù)組各自沒(méi)有的集合
let complement = arr1.filter(function (val) { return !(arr2.indexOf(val) > -1) })
.concat(arr2.filter(function (val) { return !(arr1.indexOf(val) > -1) }))
// 差集 數(shù)組arr1相對(duì)于arr2所沒(méi)有的
let diff = arr1.filter(function (val) { return arr2.indexOf(val) === -1 })
console.log('arr1: ', arr1);
console.log('arr2: ', arr2);
console.log('交集', intersection);
console.log('并集', union);
console.log('補(bǔ)集', complement);
console.log('差集', diff);
結(jié)語(yǔ):今天分享的內(nèi)容好像與threejs沒(méi)有直接關(guān)系,但我相信大家(只少我是^^)在碼代碼的過(guò)程中會(huì)經(jīng)常用到這些方法,今天的分享到此結(jié)束謝謝大家的支持。