摘要:排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計數(shù)組各個元素出現(xiàn)的次數(shù),字符串各個字符的出現(xiàn)次數(shù),獲取地址鏈接的各個參數(shù)以后會記錄自己解決過和遇到過的算法相關(guān)的題,系列一就以常見的開篇吧。
排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計數(shù)組各個元素出現(xiàn)的次數(shù), 字符串各個字符的出現(xiàn)次數(shù),獲取地址鏈接的各個參數(shù)
以后會記錄自己解決過和遇到過的算法相關(guān)的題,系列一就以常見的開篇吧。
排序本來想多列幾個排序方法,但是其它都不常見,更多請點擊查看,冒泡排序和快速排序中以快速排序最優(yōu)。
1. 冒泡排序var arr = [0, 4, 2, 1, 3]; var i = j = 0; for(i; i2. 快速排序" 從小到大排序 // "<" 從大到小排序 if(arr[j] > arr[j+1]){ temp = arr[j] arr[j] = arr[j+1] arr[j+1] = temp } } } console.log(arr);
function quickSort(arr){ //如果數(shù)組<=1,則直接返回 if (arr.length <= 1) { return arr; } var pivotIndex = Math.floor(arr.length/2); //找基準(zhǔn),并把基準(zhǔn)從原數(shù)組刪除 var pivot = arr.splice(pivotIndex,1)[0]; //定義左右數(shù)組 var left = []; var right = []; //比基準(zhǔn)小的放在left,比基準(zhǔn)大的放在right for (var i=0;i數(shù)組去重 1. 遍歷數(shù)組法 var arr = ["2", 1, 5, 4, 7, "9", 4, 1, "2", 6, 8, 2]; for (var i = 0, newArr = [], len = arr.length; i < len; i++){ if (newArr.indexOf(arr[i]) == -1) { newArr.push(arr[i]); } } console.log(newArr);2. 數(shù)組下標(biāo)判斷法var arr = ["2", 1, 5, 4, 7, "9", 4, 1, "2", 6, 8, 2]; for (var i = 1, newArr = [arr[0]], len = arr.length; i < len; i++){ if (arr.indexOf(arr[i]) == i) { newArr.push(arr[i]); } } console.log(newArr);3. 對象鍵值對法var arr = ["2", 1, 5, 4, 7, "9", 4, 1, "2", 6, 8, 2]; for (var i = 0, obj = {}, newArr = [], len = arr.length, val, type; i < len; i++){ val = arr[i]; type = typeof val; if (!obj[val]) { // 對象沒有該鍵對應(yīng)的值 obj[val] = type; newArr.push(val); } else if (obj[val].indexOf(type) < 0) {//對象有該鍵對應(yīng)的值且它的值是不重復(fù)的 obj[val] = type; newArr.push(val); } } console.log(newArr);4. 排序后相鄰去除法var arr = ["2", 1, 5, 4, 7, "9", 4, 1, "2", 6, 8, 2]; arr.sort(); var newArr = [arr[0]]; for (var i = 1, len = arr.length; i < len; i++) { if (arr[i] !== newArr[newArr.length-1]) { newArr.push(arr[i]); } } console.log(newArr);5. 優(yōu)化遍歷數(shù)組法var arr = ["2", 1, 5, 4, 7, "9", 4, 1, "2", 6, 8, 2]; for (var i = 0, len = arr.length, newArr = []; i < len; i++) { for (var j = i + 1; j < len; j++) { if (arr[i] === arr[j]) j = ++i; } newArr.push(arr[i]); } console.log(newArr);6. 利用splice直接在原數(shù)組進(jìn)行操作var arr = ["2", 1, 5, 4, 7, "9", 4, 1, "2", 6, 8, 2]; for (var i = 0, len = arr.length; i < len; i++) { for (var j = i + 1; j < len; j++) { if (arr[i] === arr[j]) { arr.splice(j, 1); len--; j--; } } } console.log(arr);7. es6簡化版var arr = ["2", 1, 5, 4, 7, "9", 4, 1, "2", 6, 8, 2]; // 7.1 var newArr = [...new Set(arr)]; console.log(newArr); // 7.2 var newArr = Array.from(new Set(arr)); console.log(newArr);// 數(shù)組去重,打亂數(shù)組,統(tǒng)計數(shù)組各個元素出現(xiàn)的次數(shù), 字符串各個字符的出現(xiàn)次數(shù),獲取地址鏈接的各個參數(shù)打亂數(shù)組var arr = [2,5,"6",3,9,"2",4,7]; arr.sort(function(){ return 0.5 - Math.random() }); console.log(arr);統(tǒng)計數(shù)組各個元素出現(xiàn)的次數(shù) 1. 自創(chuàng)var arr = ["2", 1, 5, 4, 7, "9", 4, 1, "2", 6, 8, 2]; for (var i = 0, len = arr.length, newArr = []; i < len; i++) { var isPush = true; for (var j = 0, l = newArr.length; j < l; j++) { if (arr[i] === newArr[j].val) { isPush = false; newArr[j].count++; } } if (isPush) { newArr.push({val: arr[i], count: 1}); } else { isPush = true; } } console.log(newArr);2. es6var arr = ["2", 1, 5, 4, 7, "9", 4, 1, "2", 6, 8, 2]; var newArr = arr.reduce((arrs, cv) => { const found = arrs.find(it => it[0] === cv); if (found) { found[1] += 1; } else { arrs.push([cv, 1]); } return arrs; }, []); console.log(newArr);字符串各個字符的出現(xiàn)次數(shù)var str = "abdcsdwdaoprr"; for (var i = 0, len = str.length, obj = {}; i < len; i++) { if (obj[str[i]]) { obj[str[i]]++; } else { obj[str[i]] = 1; } } console.log(obj);獲取地址鏈接的各個參數(shù)var url = "https://www.google.com.hk/search?safe=strict&ei=M_u5WvLZO4bzUrfpn_AJ&q=js%9F%&oq=js%E7%BB&gs_l=psy-ab"; var search = url.substring(url.indexOf("?")+1); var tmpArr = search.split("&"); var urlParmObj = {}; if (tmpArr.length > 0 && tmpArr[0] != "") { for (var i = 0, len = tmpArr.length; i < len; i++) { var tmp = tmpArr[i].split("="); urlParmObj[tmp[0]] = tmp[1]; } } console.log(urlParmObj);es6 實踐var arr = [1,2,3,4,5]; const param = arr.find(it => it === 5); param += 1; console.log(arr);更多其它內(nèi)容請查看
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/95320.html
摘要:道阻且長啊前端面試總結(jié)前端面試筆試面試騰訊一面瀏覽器工作原理瀏覽器的主要組件包括用戶界面包括地址欄后退前進(jìn)按鈕書簽?zāi)夸洖g覽器引擎用來查詢及操作渲染引擎的接口渲染引擎渲染界面和是基于兩種渲染引擎構(gòu)建的,使用自主研發(fā)的渲染引擎,和都使用網(wǎng)絡(luò)用來 道阻且長啊TAT(前端面試總結(jié)) 前端 面試 筆試 面試 騰訊一面 1.瀏覽器工作原理 瀏覽器的主要組件包括: 用戶界面- 包括地址欄、后退/前...
摘要:道阻且長啊前端面試總結(jié)前端面試筆試面試騰訊一面瀏覽器工作原理瀏覽器的主要組件包括用戶界面包括地址欄后退前進(jìn)按鈕書簽?zāi)夸洖g覽器引擎用來查詢及操作渲染引擎的接口渲染引擎渲染界面和是基于兩種渲染引擎構(gòu)建的,使用自主研發(fā)的渲染引擎,和都使用網(wǎng)絡(luò)用來 道阻且長啊TAT(前端面試總結(jié)) 前端 面試 筆試 面試 騰訊一面 1.瀏覽器工作原理 瀏覽器的主要組件包括: 用戶界面- 包括地址欄、后退/前...
摘要:道阻且長啊前端面試總結(jié)前端面試筆試面試騰訊一面瀏覽器工作原理瀏覽器的主要組件包括用戶界面包括地址欄后退前進(jìn)按鈕書簽?zāi)夸洖g覽器引擎用來查詢及操作渲染引擎的接口渲染引擎渲染界面和是基于兩種渲染引擎構(gòu)建的,使用自主研發(fā)的渲染引擎,和都使用網(wǎng)絡(luò)用來 道阻且長啊TAT(前端面試總結(jié)) 前端 面試 筆試 面試 騰訊一面 1.瀏覽器工作原理 瀏覽器的主要組件包括: 用戶界面- 包括地址欄、后退/前...
摘要:我自己封裝這個,并不是我有造輪子的習(xí)慣,而是,都是一些常用,但是零散的小實例,網(wǎng)上基本沒有插件。,因為零散的小實例,涉及到的有字符串,數(shù)組,對象等類型,就算找到插件,在項目引入的很有可能不止一個插件。都是簡單的代碼,封裝也不難。 1.前言 因為公司最近項目比較忙,沒那么多空余的事件寫文章了,所以這篇文章晚了幾天發(fā)布。但是這也沒什么關(guān)系,不過該來的,總是會來的。好了,其他的不多說的,大家...
閱讀 1640·2023-04-25 20:36
閱讀 2049·2021-09-02 15:11
閱讀 1177·2021-08-27 13:13
閱讀 2653·2019-08-30 15:52
閱讀 4589·2019-08-29 17:13
閱讀 1001·2019-08-29 11:09
閱讀 1491·2019-08-26 11:51
閱讀 833·2019-08-26 10:56