JavaScript的一些小技巧分享
陣列去重
ES6提供了幾種簡潔的陣列去重的方法,但該方法並不適合處理非基本型別的陣列。對於基本型別的陣列去重,可以使用... new Set()來過濾掉陣列中重複的值,建立一個只有唯一值的新陣列。
const array = [1,1,2,3,5,1] const uniqueArray = [...new Set(array)]; console.log(uniqueArray); > Result:(4) [1,5]
這是ES6中的新特性,在ES6之前,要實現同樣的效果,我們需要使用更多的程式碼。該技巧適用於包含基本型別的陣列:undefined、null、boolean、string和number。如果陣列中包含了一個object,function或其他陣列,那就需要使用另一種方法。
除了上面的方法之外,還可以使用Array.from(new Set())來實現:
const array = [1,1] Array.from(new Set(array)) > Result:(4)[1,5]
另外,還可以使用Array的.filter及indexOf()來實現:
const array = [1,1] array.filter((arr,index) => array.indexOf(arr) === index) > Result:(4)[1,5]
注意,indexOf()方法將返回陣列中第一個出現的陣列項。這就是為什麼我們可以在每次迭代中將indexOf()方法返回的索引與當索索引進行比較,以確定當前項是否重複。
確保陣列的長度
在處理網格結構時,如果原始資料每行的長度不相等,就需要重新建立該資料。為了確保每行的資料長度相等,可以使用Array.fill來處理
let array = Array(5).fill(''); console.log(array); > Result: (5) ["","",""]
陣列對映
不使用Array.map來對映陣列值的方法。
const array = [ { name: '大漠',email: '[email protected]' },{ name: 'Airen',email: '[email protected]' }] const name = Array.from(array,({ name }) => name) > Result: (2)["大漠","Airen"]
陣列截斷
如果你想從陣列末尾刪除值(刪除陣列中的最後一項),有比使用splice()更快的替代方法。
例如,你知道原始陣列的大小,可以重新定義陣列的length屬性的值,就可以實現從陣列末尾刪除值:
let array = [0,4,6,7,8,9] console.log(array.length) > Result: 10 array.length = 4 console.log(array) > Result: (4)[0,3]
這是一個特別簡潔的解決方案。但是,slice()方法執行更快,效能更好:
let array = [0,9]; array = array.slice(0,4); console.log(array); > Result: [0,3]
過濾掉陣列中的falsy值
如果你想過濾陣列中的falsy值,比如0、undefined、null、false,那麼可以通過map和filter方法實現:
const array = [0,'0','1','大漠','w3cplus.com',undefined,true,false,null,'undefined','null',NaN,'NaN','1' + 0] array.map(item => { return item }).filter(Boolean) > Result: (10)[1,"0","1","大漠","w3cplus.com","undefined","null","NaN","10"]
獲取陣列的最後一項
陣列的slice()取值為正值時,從陣列的開始處擷取陣列的項,如果取值為負整數時,可以從陣列末屬開始獲取陣列項。
let array = [1,7] const firstArrayVal = array.slice(0,1) > Result: [1] const lastArrayVal = array.slice(-1) > Result: [7] console.log(array.slice(1)) > Result: (6)[2,7] console.log(array.slice(array.length)) > Result: []
正如上面示例所示,使用array.slice(-1)獲取陣列的最後一項,除此之外還可以使用下面的方式來獲取陣列的最後一項:
console.log(array.slice(array.length - 1)) > Result: [7]
從陣列中獲取最大值和最小值
可以使用Math.max和Math.min取出陣列中的最大小值和最小值:
const numbers = [15,80,-9,90,-99] const maxInNumbers = Math.max.apply(Math,numbers) const minInNumbers = Math.min.apply(Math,numbers) console.log(maxInNumbers) > Result: 90 console.log(minInNumbers) > Result: -99
另外還可以使用ES6的...運算子來完成:
const numbers = [1,4]; Math.max(...numbers) > Result: 4 Math.min(...numbers) > Result: 1
以上就是JavaScript的一些小技巧分享的詳細內容,更多關於JavaScript 小技巧的資料請關注我們其它相關文章!