成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

今天,學會這10個JS代碼段就夠了!

開發 前端
在本文中,我們來看一下,如何學會這10個JS代碼段,讓我們一起學習一下吧!

 [[408192]]

用 apply 將數組各項添加到另一個數組

  1. const array = ['a''b']; 
  2. const elements = [0, 1, 2]; 
  3. array.push.apply(array, elements); 
  4. console.info(array); // ["a""b", 0, 1, 2] 

函數只執行一次

  1. function once (fn){ 
  2.   let called = false 
  3.   return function () { 
  4.     if (!called) { 
  5.       called = true 
  6.       fn.apply(this, arguments) 
  7.     } 
  8.   } 
  9.  
  10. function func (){ 
  11.     console.log(1); 
  12.  
  13. //調用 
  14. let onlyOnce = once(func); 
  15.  
  16. // 測試 
  17. onlyOnce(); // 1 
  18. onlyOnce(); // 不執行 

防抖

  1. /** 
  2.  * 防抖 
  3.  * @param {Function} func 要執行的回調函數 
  4.  * @param {Number} wait 延時的時間 
  5.  * @param {Boolean} immediate 是否立即執行 
  6.  * @return null 
  7.  */ 
  8. let timeout; 
  9. function Debounce(func, wait = 3000, immediate = true) { 
  10.   // 清除定時器 
  11.   if (timeout !== null) clearTimeout(timeout); 
  12.   // 立即執行,此類情況一般用不到 
  13.   if (immediate) { 
  14.     var callNow = !timeout; 
  15.     timeout = setTimeout(function() { 
  16.       timeout = null
  17.     }, wait); 
  18.     if (callNow) typeof func === 'function' && func(); 
  19.   } else { 
  20.     // 設置定時器,當最后一次操作后,timeout不會再被清除,所以在延時wait毫秒后執行func回調方法 
  21.     timeout = setTimeout(function() { 
  22.       typeof func === 'function' && func(); 
  23.     }, wait); 
  24.   } 
  25.  
  26. Debounce(()=>console.log(1)); 

遞歸數組降為一維

  1. let children = [1, [2, 3], [4, [5, 6, [7, 8]]], [9, 10]]; 
  2. function simpleNormalizeChildren(children) { 
  3.             for (let i = 0; i < children.length; i++) { 
  4.                 if (Array.isArray(children[i])) { 
  5.                     children = Array.prototype.concat.apply([], children); 
  6.                     simpleNormalizeChildren(children) 
  7.                 } 
  8.             } 
  9.             return children; 
  10.         } 
  11.  
  12. console.log(simpleNormalizeChildren(children)); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

數組降維(二維降一維)

  1. function simpleNormalizeChildren(children) { 
  2.             for (let i = 0; i < children.length; i++) { 
  3.                 if (Array.isArray(children[i])) { 
  4.                     return Array.prototype.concat.apply([], children) 
  5.                 } 
  6.             } 
  7.             return children 
  8. let arrs = [['1'],['3']]; 
  9. const arr = simpleNormalizeChildren(arrs); 
  10. console.log(arr); // ['1','3'

使用可選鏈進行函數調用

  1. function doSomething(onContent, onError) { 
  2.   try { 
  3.    // ... do something with the data 
  4.   } 
  5.   catch (err) { 
  6.     onError?.(err.message); // 如果onError是undefined也不會有異常 
  7.   } 

檢測數組對象中是否有空值

  1. const data = [ 
  2.   { 
  3.    name:"maomin" 
  4.   }, 
  5.   { 
  6.     name:"" 
  7.   } 
  8. const arr = data.filter(item => 
  9.     Object.values(item).includes(''
  10. ); 
  11.  
  12. console.log(arr.length>0?"有空值":"無空值"); // 有空值 

計算數組中每個元素出現的次數

  1. let names = ['Alice''Bob''Tiff''Bruce''Alice']; 
  2.  
  3. let countedNames = names.reduce(function (allNames, name) { 
  4.   if (name in allNames) { 
  5.     allNames[name]++; 
  6.   } 
  7.   else { 
  8.     allNames[name] = 1; 
  9.   } 
  10.   return allNames; 
  11. }, {}); 
  12.  
  13. console.log(countedNames); //  { Alice: 2, Bob: 1, Tiff: 1, Bruce: 1 } 

按屬性對object分類

  1. let people = [ 
  2.   { name'Alice', age: 21 }, 
  3.   { name'Max', age: 20 }, 
  4.   { name'Jane', age: 20 } 
  5. ]; 
  6.  
  7. function groupBy(objectArray, property) { 
  8.   return objectArray.reduce(function (acc, obj) { 
  9.     let key = obj[property]; 
  10.     if (!acc[key]) { 
  11.       acc[key] = []; 
  12.     } 
  13.     acc[key].push(obj); 
  14.     return acc; 
  15.   }, {}); 
  16.  
  17. const groupedPeople = groupBy(people, 'age'); 
  18. console.log(groupedPeople); 
  19. // { 
  20. //   20: [ 
  21. //     { name'Max', age: 20 }, 
  22. //     { name'Jane', age: 20 } 
  23. //   ], 
  24. //   21: [{ name'Alice', age: 21 }] 
  25. // } 

將帶有分割符的字符串轉化成一個n維數組

  1.  const str = "A-2-12"
  2.  const str1 = str.split('-'); 
  3.  console.log(str1); 
  4.  const arr = str1.reverse().reduce((pre,cur,i) => { 
  5.  if(i==0) 
  6.   { pre.push(cur) 
  7.    return pre 
  8.  } 
  9.   return [cur,pre] 
  10. },[]) 
  11.   
  12. console.log(arr) // ["A"["B",["C"]]] 

本文轉載自微信公眾號「前端歷劫之路」,可以通過以下二維碼關注。轉載本文請聯系前端歷劫之路公眾號。

 

 

責任編輯:武曉燕 來源: 前端歷劫之路
相關推薦

2021-07-14 23:57:26

Vue高級技巧

2019-08-20 14:40:35

Redis數據庫

2019-11-07 09:20:42

Node.js項目服務器

2021-01-18 11:41:22

SQL數據庫編程語言

2021-06-21 09:22:53

按鈕設計UI標簽

2022-08-09 15:38:55

Linux

2020-10-27 12:06:17

MathJavaScript對象

2022-04-07 13:02:53

前端緩存

2021-08-04 00:10:49

場景版本大文件

2021-07-09 17:17:09

文件場景內核

2018-09-12 15:16:19

數據中心網絡機房

2025-02-27 07:00:00

解構賦值代碼JavaScript

2020-07-29 08:05:42

JavaScriptTypeScript工具

2019-12-23 14:04:07

蘋果芯片iPhone

2017-09-15 16:37:27

2018-07-06 15:25:50

程序員編程python

2020-06-10 14:30:45

代碼開發AI

2020-07-07 07:55:53

web app數據科學機器學習

2020-08-05 16:09:52

javascript壓縮圖片前端

2022-10-17 09:01:09

JavaScripNode.js
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕久久精品 | 亚洲一区二区不卡在线观看 | 亚洲 中文 欧美 日韩 在线观看 | 乱一性一乱一交一视频a∨ 色爱av | www.9191.com| 日韩三级一区 | 日本一区二区三区在线观看 | 精品久久久久久亚洲精品 | 在线看中文字幕 | 国产一区二区三区视频 | 亚洲高清视频在线观看 | 成人欧美一区二区三区黑人孕妇 | 国产精彩视频 | av网站在线看 | 国产农村妇女精品一区 | 欧美videosex性极品hd | 久久久久精| 国产三级精品三级在线观看四季网 | 欧美黄在线观看 | 午夜久久久 | 午夜精品一区 | 国产精彩视频在线观看 | 国产精品国产三级国产aⅴ中文 | 国产高清视频 | 国产精品免费一区二区三区四区 | 国产中文字幕在线 | 色婷婷久久久亚洲一区二区三区 | 免费一区二区 | 欧美日韩国产在线观看 | 国产一区二区三区四 | 日韩电影免费在线观看中文字幕 | 欧美一区二区三区大片 | 日本精品视频一区二区 | 亚洲一区二区精品视频 | 一区二区视屏 | 亚洲高清视频在线观看 | 久久精品一区二区 | 免费的av网站| 亚洲三区在线 | 欧美黄色大片在线观看 | 四虎影视一区二区 |