激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - 前端經常會用到的JavaScript方法封裝

前端經常會用到的JavaScript方法封裝

2021-12-30 22:58Find一只程序猿 js教程

前端經常會用到的JavaScript方法封裝都有哪些呢?我們一起來看一下吧!

前端經常會用到的JavaScript方法封裝

 1.數組去重

  1. function unique1(arr) { 
  2.     return [...new Set(arr)] 
  3.  
  4. function unique2(arr) { 
  5.     var obj = {}; 
  6.     return arr.filter(ele => { 
  7.         if (!obj[ele]) { 
  8.             obj[ele] = true; 
  9.             return true; 
  10.         } 
  11.     }) 
  12.  
  13. function unique3(arr) { 
  14.     var result = []; 
  15.     arr.forEach(ele => { 
  16.         if (result.indexOf(ele) == -1) { 
  17.             result.push(ele) 
  18.         } 
  19.     }) 
  20.     return result; 

2.字符串去重

  1. String.prototype.unique = function () { 
  2.     var obj = {}, 
  3.         str = ''
  4.         len = this.length; 
  5.     for (var i = 0; i < len; i++) { 
  6.         if (!obj[this[i]]) { 
  7.             str += this[i]; 
  8.             obj[this[i]] = true
  9.         } 
  10.     } 
  11.     return str; 
  12.  
  13. ###### //去除連續的字符串  
  14. function uniq(str) { 
  15.     return str.replace(/(\w)\1+/g, '$1'

3.輸入一個值,返回其數據類型

  1. function type(para) { 
  2.     return Object.prototype.toString.call(para) 

4.找出字符串中第一次只出現一次的字母

  1. String.prototype.firstAppear = function () { 
  2.     var obj = {}, 
  3.         len = this.length; 
  4.     for (var i = 0; i < len; i++) { 
  5.         if (obj[this[i]]) { 
  6.             obj[this[i]]++; 
  7.         } else { 
  8.             obj[this[i]] = 1; 
  9.         } 
  10.     } 
  11.     for (var prop in obj) { 
  12.        if (obj[prop] == 1) { 
  13.          return prop; 
  14.        } 
  15.     } 

5.深拷貝 淺拷貝

  1. //深克隆(深克隆不考慮函數) 
  2. function deepClone(obj, result) { 
  3.     var result = result || {}; 
  4.     for (var prop in obj) { 
  5.         if (obj.hasOwnProperty(prop)) { 
  6.             if (typeof obj[prop] == 'object' && obj[prop] !== null) { 
  7.                 // 引用值(obj/array)且不為null 
  8.                 if (Object.prototype.toString.call(obj[prop]) == '[object Object]') { 
  9.                     // 對象 
  10.                     result[prop] = {}; 
  11.                 } else { 
  12.                     // 數組 
  13.                     result[prop] = []; 
  14.                 } 
  15.                 deepClone(obj[prop], result[prop]) 
  16.     } else { 
  17.         // 原始值或func 
  18.         result[prop] = obj[prop] 
  19.     } 
  20.   } 
  21. return result; 
  22.  
  23. // 深淺克隆是針對引用值 
  24. function deepClone(target) { 
  25.     if (typeof (target) !== 'object') { 
  26.         return target; 
  27.     } 
  28.     var result; 
  29.     if (Object.prototype.toString.call(target) == '[object Array]') { 
  30.         // 數組 
  31.         result = [] 
  32.     } else { 
  33.         // 對象 
  34.         result = {}; 
  35.     } 
  36.     for (var prop in target) { 
  37.         if (target.hasOwnProperty(prop)) { 
  38.             result[prop] = deepClone(target[prop]) 
  39.         } 
  40.     } 
  41.     return result; 
  42. // 無法復制函數 
  43. var o1 = jsON.parse(jsON.stringify(obj1)); 

6.判斷元素有沒有子元素

  1. function hasChildren(e) { 
  2.     var children = e.childNodes, 
  3.         len = children.length; 
  4.     for (var i = 0; i < len; i++) { 
  5.         if (children[i].nodeType === 1) { 
  6.             return true
  7.         } 
  8.     } 
  9.     return false

7.返回當前的時間(年月日時分秒)

  1. function getDateTime() { 
  2.     var date = new Date(), 
  3.         year = date.getFullYear(), 
  4.         month = date.getMonth() + 1, 
  5.         day = date.getDate(), 
  6.         hour = date.getHours() + 1, 
  7.         minute = date.getMinutes(), 
  8.         second = date.getSeconds(); 
  9.         month = checkTime(month); 
  10.         day = checkTime(day); 
  11.         hour = checkTime(hour); 
  12.         minute = checkTime(minute); 
  13.         second = checkTime(second); 
  14.      function checkTime(i) { 
  15.         if (i < 10) { 
  16.                 i = "0" + i; 
  17.        } 
  18.       return i; 
  19.     } 
  20.     return "" + year + "年" + month + "月" + day + "日" + hour + "時" + minute + "分" + second + "秒" 

8.兼容getElementsByClassName方法

  1. Element.prototype.getElementsByClassName = Document.prototype.getElementsByClassName = function (_className) { 
  2.     var allDomArray = document.getElementsByTagName('*'); 
  3.     var lastDomArray = []; 
  4.     function trimSpace(strClass) { 
  5.         var reg = /\s+/g; 
  6.         return strClass.replace(reg, ' ').trim() 
  7.     } 
  8.     for (var i = 0; i < allDomArray.length; i++) { 
  9.         var classArray = trimSpace(allDomArray[i].className).split(' '); 
  10.         for (var j = 0; j < classArray.length; j++) { 
  11.             if (classArray[j] == _className) { 
  12.                 lastDomArray.push(allDomArray[i]); 
  13.                 break; 
  14.             } 
  15.         } 
  16.     } 
  17.     return lastDomArray; 

9.封裝自己的forEach方法

  1. Array.prototype.myForEach = function (func, obj) { 
  2.     var len = this.length; 
  3.     var _this = arguments[1] ? arguments[1] : window; 
  4.     // var _this=arguments[1]||window; 
  5.     for (var i = 0; i < len; i++) { 
  6.         func.call(_this, this[i], i, this) 
  7.     } 

10.封裝自己的filter方法

  1. Array.prototype.myFilter = function (func, obj) { 
  2.     var len = this.length; 
  3.     var arr = []; 
  4.     var _this = arguments[1] || window; 
  5.     for (var i = 0; i < len; i++) { 
  6.         func.call(_this, this[i], i, this) && arr.push(this[i]); 
  7.     } 
  8.     return arr; 

11.封裝自己的數組map方法

  1. Array.prototype.myMap = function (func) { 
  2.     var arr = []; 
  3.     var len = this.length; 
  4.     var _this = arguments[1] || window; 
  5.     for (var i = 0; i < len; i++) { 
  6.         arr.push(func.call(_this, this[i], i, this)); 
  7.     } 
  8.     return arr; 

12.封裝自己的數組every方法

  1. Array.prototype.myEvery = function (func) { 
  2.     var flag = true
  3.     var len = this.length; 
  4.     var _this = arguments[1] || window; 
  5.     for (var i = 0; i < len; i++) { 
  6.         if (func.apply(_this, [this[i], i, this]) == false) { 
  7.             flag = false
  8.             break; 
  9.         } 
  10.     } 
  11.     return flag; 

13.封裝自己的數組reduce方法

  1. Array.prototype.myReduce = function (func, initialValue) { 
  2.     var len = this.length, 
  3.         nextValue, 
  4.         i; 
  5.     if (!initialValue) { 
  6.         // 沒有傳第二個參數 
  7.         nextValue = this[0]; 
  8.         i = 1; 
  9.     } else { 
  10.         // 傳了第二個參數 
  11.         nextValue = initialValue; 
  12.         i = 0; 
  13.     } 
  14.     for (; i < len; i++) { 
  15.         nextValue = func(nextValue, this[i], i, this); 
  16.     } 
  17.     return nextValue; 

14.獲取url中的參數

  1. function getWindonHref() { 
  2.     var sHref = window.location.href; 
  3.     var args = sHref.split('?'); 
  4.     if (args[0] === sHref) { 
  5.         return ''
  6.     } 
  7.     var hrefarr = args[1].split('#')[0].split('&'); 
  8.     var obj = {}; 
  9.     for (var i = 0; i < hrefarr.length; i++) { 
  10.         hrefarr[i] = hrefarr[i].split('='); 
  11.         obj[hrefarr[i][0]] = hrefarr[i][1]; 
  12.     } 
  13.     return obj; 

15.數組排序

  1. // 快排 [left] + min + [right
  2. function quickArr(arr) { 
  3.     if (arr.length <= 1) { 
  4.         return arr; 
  5.     } 
  6.     var left = [], 
  7.         right = []; 
  8.     var pIndex = Math.floor(arr.length / 2); 
  9.     var p = arr.splice(pIndex, 1)[0]; 
  10.     for (var i = 0; i < arr.length; i++) { 
  11.         if (arr[i] <= p) { 
  12.             left.push(arr[i]); 
  13.         } else { 
  14.             right.push(arr[i]); 
  15.         } 
  16.     } 
  17.     // 遞歸 
  18.     return quickArr(left).concat([p], quickArr(right)); 
  19.  
  20. // 冒泡 
  21. function bubbleSort(arr) { 
  22.     for (var i = 0; i < arr.length - 1; i++) { 
  23.         for (var j = i + 1; j < arr.length; j++) { 
  24.             if (arr[i] > arr[j]) { 
  25.                 var temp = arr[i]; 
  26.                 arr[i] = arr[j]; 
  27.                 arr[j] = temp
  28.             } 
  29.         } 
  30.     } 
  31.     return arr; 
  32.  
  33. function bubbleSort(arr) { 
  34.     var len = arr.length; 
  35.     for (var i = 0; i < len - 1; i++) { 
  36.         for (var j = 0; j < len - 1 - i; j++) { 
  37.             if (arr[j] > arr[j + 1]) { 
  38.                 var temp = arr[j]; 
  39.                 arr[j] = arr[j + 1]; 
  40.                 arr[j + 1] = temp
  41.             } 
  42.         } 
  43.     } 
  44.     return arr; 

原文鏈接:https://www.toutiao.com/a7046259287210918432/

延伸 · 閱讀

精彩推薦
  • js教程js實現鼠標拖曳效果

    js實現鼠標拖曳效果

    這篇文章主要為大家詳細介紹了js實現鼠標拖曳效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    等待的L先生8752021-12-22
  • js教程原生js中運算符及流程控制示例詳解

    原生js中運算符及流程控制示例詳解

    這篇文章主要給大家介紹了關于原生js中運算符及流程控制的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價...

    meichaoWen5002021-12-27
  • js教程Javascript 模擬mvc實現點餐程序案例詳解

    Javascript 模擬mvc實現點餐程序案例詳解

    這篇文章主要介紹了Javascript 模擬mvc實現點餐程序案例詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參...

    LiOnTalKING12122021-12-18
  • js教程原生JavaScript實現隨機點名表

    原生JavaScript實現隨機點名表

    這篇文章主要為大家詳細介紹了原生JavaScript實現隨機點名表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    棟棟很優秀啊9682021-12-31
  • js教程js刪除對象中的某一個字段的方法實現

    js刪除對象中的某一個字段的方法實現

    這篇文章主要介紹了js刪除對象中的某一個字段的方法實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...

    兔子零847232021-12-29
  • js教程使用 JavaScript 進行數據分組最優雅的方式

    使用 JavaScript 進行數據分組最優雅的方式

    對數據進行分組,是我們在開發中經常會遇到的需求,使用 JavaScript 進行數據分組的方式也有很多種,但是由于沒有原生方法的支持,我們自己實現的數據...

    code秘密花園4352021-12-27
  • js教程JS代碼實現頁面切換效果

    JS代碼實現頁面切換效果

    這篇文章主要為大家詳細介紹了JS代碼實現頁面切換效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    _Adoph9262021-12-29
  • js教程原生JavaScript實現輪播圖

    原生JavaScript實現輪播圖

    這篇文章主要為大家詳細介紹了原生JavaScript實現輪播圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    棟棟很優秀啊6872021-12-29
主站蜘蛛池模板: 视频一区二区在线播放 | 伊人久久电影网 | 成人午夜高清 | 精品一区二区三区网站 | 久久久久久久久久综合 | 国色天香综合网 | 国产成人av一区二区 | 成人毛片在线免费观看 | 免费看成人av | 亚洲欧美日韩一区二区三区在线观看 | 日产精品一区二区三区在线观看 | 成人午夜免费在线观看 | 精品久久久久久国产三级 | 久久综合av | 欧美 日韩 中文 | 91网站在线播放 | 在线观看国产网站 | 久久久中文 | 久久中文免费 | 日日噜噜夜夜爽 | 蜜桃网站在线 | 精品国产三级a | 日本在线观看一区二区 | 日本中文字幕电影在线观看 | 国产麻豆交换夫妇 | 中日韩乱码一二新区 | 久久久久久久国产视频 | 日韩精品久久久久久久电影99爱 | 亚洲码无人客一区二区三区 | 日韩黄色片免费看 | 精品亚洲一 | 亚洲人成电影在线 | 国产三级在线观看a | 99精品视频在线导航 | 一级做人爱c黑人影片 | sesee99| 国产欧美精品一区二区三区四区 | 亚洲视频高清 | 欧美成人精品一区 | 精品国产91久久久久久久 | 特级a欧美做爰片毛片 |