1. 程式人生 > 程式設計 >JavaScript的一些小技巧分享

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 小技巧的資料請關注我們其它相關文章!