更多課程 選擇中心

Web培訓
美國上市教育機構

400-111-8989

Web培訓

Web前端工程師要掌握的JavaScript代碼片段(二)

  • 發布:Web前端培訓
  • 來源:Web職場
  • 時間:2020-04-04 14:22

今天小編要跟大家分享的文章是關于Web前端工程師要掌握的JavaScript代碼片段(二)。正在從事Web前端工作的小伙伴們來和小編一起看一看吧,希望本篇文章能夠對正在從事Web前端工作的小伙伴們有所幫助。

25、用range初始化數組

使用Array(end-start)創建所需長度的數組,使用map()來填充范圍中的所需值,可以省略start使用默認值0。

const initializeArrayRange = (end, start = 0) =>

Array.apply(null, Array(end - start)).map((v, i) => i + start);

// initializeArrayRange(5) -> [0,1,2,3,4]

26、用值初始化數組

使用Array(n)創建所需長度的數組,fill(v)以填充所需的值,可以忽略value使用默認值0。

const initializeArray = (n, value = 0) => Array(n).fill(value);

// initializeArray(5, 2) -> [2,2,2,2,2]

27、列表的最后

返回arr.slice(-1)[0]

const last = arr => arr.slice(-1)[0];

// last([1,2,3]) -> 3

28、測試功能所花費的時間

使用performance.now()獲取函數的開始和結束時間,console.log()所花費的時間。第一個參數是函數名,隨后的參數傳遞給函數。

const timeTaken = callback => {

console.time('timeTaken');

const r = callback();

console.timeEnd('timeTaken');

return r;

};

// timeTaken(() => Math.pow(2, 10)) -> 1024

// (logged): timeTaken: 0.02099609375ms

29、來自鍵值對的對象

使用Array.reduce()來創建和組合鍵值對。

const objectFromPairs = arr => arr.reduce((a, v) => (a[v[0]] = v[1], a), {});

// objectFromPairs([['a',1],['b',2]]) -> {a: 1, b: 2}

30、管道

使用Array.reduce()通過函數傳遞值。

const pipe = (...funcs) => arg => funcs.reduce((acc, func) => func(acc), arg);

// pipe(btoa, x => x.toUpperCase())("Test") -> "VGVZDA=="

31、Powerset

使用reduce()與map()結合來遍歷元素,并將其組合成包含所有組合的數組。

const powerset = arr =>

arr.reduce((a, v) => a.concat(a.map(r => [v].concat(r))), [[]]);

// powerset([1,2]) -> [[], [1], [2], [2,1]]

32、范圍內的隨機整數

使用Math.random()生成一個隨機數并將其映射到所需的范圍,使用Math.floor()使其成為一個整數。

const randomIntegerInRange = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;

// randomIntegerInRange(0, 5) -> 2

33、范圍內的隨機數

使用Math.random()生成一個隨機值,使用乘法將其映射到所需的范圍。

const randomInRange = (min, max) => Math.random() * (max - min) + min;

// randomInRange(2,10) -> 6.0211363285087005

34、隨機化數組的順序

使用sort()重新排序元素,利用Math.random()來隨機排序。

const shuffle = arr => arr.sort(() => Math.random() - 0.5);

// shuffle([1,2,3]) -> [2,3,1]

35、重定向到URL

使用window.location.href或window.location.replace()重定向到url。傳遞第二個參數來模擬鏈接點擊(true - default)或HTTP重定向(false)。

const redirect = (url, asLink = true) =>

asLink ? window.location.href = url : window.location.replace(url);

// redirect('https://google.com')

36、反轉一個字符串

使用數組解構和Array.reverse()來顛倒字符串中的字符順序。合并字符以使用join('')獲取字符串。

const reverseString = str => [...str].reverse().join('');

// reverseString('foobar') -> 'raboof'

37、RGB到十六進制

使用按位左移運算符(<<)和toString(16),然后padStart(6,“0”)將給定的RGB參數轉換為十六進制字符串以獲得6位十六進制值。

const rgbToHex = (r, g, b) => ((r << 16) + (g << 8) + b).toString(16).padStart(6, '0');

// rgbToHex(255, 165, 1) -> 'ffa501'

38、滾動到頂部

使用document.documentElement.scrollTop或document.body.scrollTop獲取到頂部的距離。

從頂部滾動一小部分距離。

使用window.requestAnimationFrame()來滾動。

const scrollToTop = _ => {

const c = document.documentElement.scrollTop || document.body.scrollTop;

if (c > 0) {

window.requestAnimationFrame(scrollToTop);

window.scrollTo(0, c - c / 8);

}

};

// scrollToTop()

39、隨機數組值

使用Array.map()和Math.random()創建一個隨機值的數組。使用Array.sort()根據隨機值對原始數組的元素進行排序。

40、 數組之間的相似性

使用filter()移除不是values的一部分值,使用includes()確定。

const similarity = (arr, values) => arr.filter(v => values.includes(v));

// similarity([1,2,3], [1,2,4]) -> [1,2]

41、 按字符串排序(按字母順序排列)

使用split('')分割字符串,sort()使用localeCompare(),使用join('')重新組合。

const sortCharactersInString = str =>

str.split('').sort((a, b) => a.localeCompare(b)).join('');

// sortCharactersInString('cabbage') -> 'aabbceg'

42、數組總和

使用reduce()將每個值添加到累加器,初始化值為0。

const sum = arr => arr.reduce((acc, val) => acc + val, 0);

// sum([1,2,3,4]) -> 10

43、交換兩個變量的值

使用數組解構來交換兩個變量之間的值。

[varA, varB] = [varB, varA];

// [x, y] = [y, x]

44、列表的tail

返回arr.slice(1)

const tail = arr => arr.length > 1 ? arr.slice(1) : arr;

// tail([1,2,3]) -> [2,3]

// tail([1]) -> [1]

45、數組唯一值

使用ES6 Set和... rest操作符去掉所有重復值。

const unique = arr => [...new Set(arr)];

// unique([1,2,2,3,4,4,5]) -> [1,2,3,4,5]

46、URL參數

使用match() 與適當的正則表達式來獲得所有鍵值對,適當的map() 。使用Object.assign()和spread運算符(...)將所有鍵值對組合到一個對象中,將location.search作為參數傳遞給當前url。

const getUrlParameters = url =>

url.match(/([^?=&]+)(=([^&]*))/g).reduce(

(a, v) => (a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1), a), {}

);

// getUrlParameters('http://url.com/page?name=Adam&surname=Smith') -> {name: 'Adam', surname: 'Smith'}

47、UUID生成器

使用crypto API生成符合RFC4122版本4的UUID。

const uuid = _ =>

([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>

(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)

);

// uuid() -> '7982fcfe-5721-4632-bede-6000885be57d'

48、驗證數字

使用!isNaN和parseFloat()來檢查參數是否是一個數字,使用isFinite()來檢查數字是否是有限的。

const validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n) && Number(n) == n;

// validateNumber('10') -> true

以上就是小編今天為大家分享的關于Web前端工程師要掌握的JavaScript代碼片段(二)的文章,希望本篇文章能夠對正在從事Web前端工作的小伙伴們有所幫助。想要了解更多Web前端相關知識,記得關注達內Web培訓官網。

作者:Chalarangelo

譯者:IT168

【免責聲明:本文圖片及文字信息均由小編轉載自網絡,旨在分享提供閱讀,版權歸原作者所有,如有侵權請聯系我們進行刪除。】

預約申請免費試聽課

填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

上一篇:轉行做Web前端的正確學習方法有哪些
下一篇:Web前端工程師要掌握的JavaScript 簡寫方法

Web前端學習人群分類有哪些?學Web前端會遇到哪些困難?

Web前端工程師都在用的前端開發工具匯總

Web前端初學者快速掌握JavaScript的技巧

Web前端開發者要知道的幾個前端框架

選擇城市和中心
黑龍江省

吉林省

河北省

貴州省

云南省

廣西省

海南省

开心激情五月天