国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

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

服務(wù)器之家 - 編程語(yǔ)言 - JavaScript - js教程 - 前端經(jīng)常會(huì)用到的JavaScript方法封裝

前端經(jīng)常會(huì)用到的JavaScript方法封裝

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

前端經(jīng)常會(huì)用到的JavaScript方法封裝都有哪些呢?我們一起來(lái)看一下吧!

前端經(jīng)常會(huì)用到的JavaScript方法封裝

 1.數(shù)組去重

  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. ###### //去除連續(xù)的字符串  
  14. function uniq(str) { 
  15.     return str.replace(/(\w)\1+/g, '$1'

3.輸入一個(gè)值,返回其數(shù)據(jù)類(lèi)型

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

4.找出字符串中第一次只出現(xiàn)一次的字母

  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. //深克隆(深克隆不考慮函數(shù)) 
  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.                     // 對(duì)象 
  10.                     result[prop] = {}; 
  11.                 } else { 
  12.                     // 數(shù)組 
  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. // 深淺克隆是針對(duì)引用值 
  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.         // 數(shù)組 
  31.         result = [] 
  32.     } else { 
  33.         // 對(duì)象 
  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. // 無(wú)法復(fù)制函數(shù) 
  43. var o1 = jsON.parse(jsON.stringify(obj1)); 

6.判斷元素有沒(méi)有子元素

  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.返回當(dāng)前的時(shí)間(年月日時(shí)分秒)

  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 + "時(shí)" + 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.封裝自己的數(shù)組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.封裝自己的數(shù)組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.封裝自己的數(shù)組reduce方法

  1. Array.prototype.myReduce = function (func, initialValue) { 
  2.     var len = this.length, 
  3.         nextValue, 
  4.         i; 
  5.     if (!initialValue) { 
  6.         // 沒(méi)有傳第二個(gè)參數(shù) 
  7.         nextValue = this[0]; 
  8.         i = 1; 
  9.     } else { 
  10.         // 傳了第二個(gè)參數(shù) 
  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中的參數(shù)

  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.數(shù)組排序

  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實(shí)現(xiàn)鼠標(biāo)拖曳效果

    js實(shí)現(xiàn)鼠標(biāo)拖曳效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)鼠標(biāo)拖曳效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下...

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

    原生js中運(yùn)算符及流程控制示例詳解

    這篇文章主要給大家介紹了關(guān)于原生js中運(yùn)算符及流程控制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)...

    meichaoWen5002021-12-27
  • js教程Javascript 模擬mvc實(shí)現(xiàn)點(diǎn)餐程序案例詳解

    Javascript 模擬mvc實(shí)現(xiàn)點(diǎn)餐程序案例詳解

    這篇文章主要介紹了Javascript 模擬mvc實(shí)現(xiàn)點(diǎn)餐程序案例詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參...

    LiOnTalKING12122021-12-18
  • js教程原生JavaScript實(shí)現(xiàn)隨機(jī)點(diǎn)名表

    原生JavaScript實(shí)現(xiàn)隨機(jī)點(diǎn)名表

    這篇文章主要為大家詳細(xì)介紹了原生JavaScript實(shí)現(xiàn)隨機(jī)點(diǎn)名表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下...

    棟棟很優(yōu)秀啊9682021-12-31
  • js教程js刪除對(duì)象中的某一個(gè)字段的方法實(shí)現(xiàn)

    js刪除對(duì)象中的某一個(gè)字段的方法實(shí)現(xiàn)

    這篇文章主要介紹了js刪除對(duì)象中的某一個(gè)字段的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的...

    兔子零847232021-12-29
  • js教程使用 JavaScript 進(jìn)行數(shù)據(jù)分組最優(yōu)雅的方式

    使用 JavaScript 進(jìn)行數(shù)據(jù)分組最優(yōu)雅的方式

    對(duì)數(shù)據(jù)進(jìn)行分組,是我們?cè)陂_(kāi)發(fā)中經(jīng)常會(huì)遇到的需求,使用 JavaScript 進(jìn)行數(shù)據(jù)分組的方式也有很多種,但是由于沒(méi)有原生方法的支持,我們自己實(shí)現(xiàn)的數(shù)據(jù)...

    code秘密花園4352021-12-27
  • js教程JS代碼實(shí)現(xiàn)頁(yè)面切換效果

    JS代碼實(shí)現(xiàn)頁(yè)面切換效果

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

    _Adoph9262021-12-29
  • js教程原生JavaScript實(shí)現(xiàn)輪播圖

    原生JavaScript實(shí)現(xiàn)輪播圖

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

    棟棟很優(yōu)秀啊6872021-12-29
主站蜘蛛池模板: 日韩激情一区二区三区 | 日韩精品三区 | 亚洲欧美日韩在线 | 日韩福利视频 | 欧美日韩精品一区二区三区蜜桃 | 日本在线不卡视频 | 中文字幕成人在线 | 欧美日一区 | 九九热免费精品视频 | 4h影院| 91精品国产综合久久福利软件 | 一区二区三区免费 | 欧美成人精品激情在线观看 | 五月婷婷婷婷 | 欧美日韩三区 | 免费福利网站 | 亚洲欧美国产日韩综合 | 黄色日本视频 | 中文字幕第33页 | 精品国产三级 | 亚洲福利二区 | 色婷婷av久久久久久久 | 亚洲 在线 | 午夜精品久久久久久久 | 亚洲国产精品一二三区 | 人人人人人你人人人人人 | 久久精品在线 | 国产99久久精品一区二区永久免费 | 色在线免费 | 国产在线观看一区 | 精品96久久久久久中文字幕无 | 视频一区二区在线观看 | 美女搞黄网站 | 国产激情在线 | 日韩和的一区二在线 | 国产精品久久久久久婷婷天堂 | 欧美色综合天天久久综合精品 | 精品久久久久久久久久久久久久 | 中文字幕一区二区三区在线视频 | 一区视频 | 国产精品成人一区二区三区夜夜夜 |