国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js常見算法(一):排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計數(shù)組各個元素出現(xiàn)的次數(shù), 字符串各個字符的出現(xiàn)次數(shù)

DTeam / 3154人閱讀

摘要:排序,數(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; i" 從小到大排序
        // "<" 從大到小排序
        if(arr[j] > arr[j+1]){
            temp = arr[j]
            arr[j] = arr[j+1]
            arr[j+1] = temp
        }
    }
}

console.log(arr);
2. 快速排序
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. es6
var 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

相關(guān)文章

  • [面試專題]線互聯(lián)網(wǎng)大廠面試總結(jié)

    摘要:道阻且長啊前端面試總結(jié)前端面試筆試面試騰訊一面瀏覽器工作原理瀏覽器的主要組件包括用戶界面包括地址欄后退前進(jìn)按鈕書簽?zāi)夸洖g覽器引擎用來查詢及操作渲染引擎的接口渲染引擎渲染界面和是基于兩種渲染引擎構(gòu)建的,使用自主研發(fā)的渲染引擎,和都使用網(wǎng)絡(luò)用來 道阻且長啊TAT(前端面試總結(jié)) 前端 面試 筆試 面試 騰訊一面 1.瀏覽器工作原理 瀏覽器的主要組件包括: 用戶界面- 包括地址欄、后退/前...

    lemanli 評論0 收藏0
  • [面試專題]線互聯(lián)網(wǎng)大廠面試總結(jié)

    摘要:道阻且長啊前端面試總結(jié)前端面試筆試面試騰訊一面瀏覽器工作原理瀏覽器的主要組件包括用戶界面包括地址欄后退前進(jìn)按鈕書簽?zāi)夸洖g覽器引擎用來查詢及操作渲染引擎的接口渲染引擎渲染界面和是基于兩種渲染引擎構(gòu)建的,使用自主研發(fā)的渲染引擎,和都使用網(wǎng)絡(luò)用來 道阻且長啊TAT(前端面試總結(jié)) 前端 面試 筆試 面試 騰訊一面 1.瀏覽器工作原理 瀏覽器的主要組件包括: 用戶界面- 包括地址欄、后退/前...

    xfee 評論0 收藏0
  • [面試專題]線互聯(lián)網(wǎng)大廠面試總結(jié)

    摘要:道阻且長啊前端面試總結(jié)前端面試筆試面試騰訊一面瀏覽器工作原理瀏覽器的主要組件包括用戶界面包括地址欄后退前進(jìn)按鈕書簽?zāi)夸洖g覽器引擎用來查詢及操作渲染引擎的接口渲染引擎渲染界面和是基于兩種渲染引擎構(gòu)建的,使用自主研發(fā)的渲染引擎,和都使用網(wǎng)絡(luò)用來 道阻且長啊TAT(前端面試總結(jié)) 前端 面試 筆試 面試 騰訊一面 1.瀏覽器工作原理 瀏覽器的主要組件包括: 用戶界面- 包括地址欄、后退/前...

    leap_frog 評論0 收藏0
  • 編寫自己代碼庫(javascript常用實例實現(xiàn)與封裝)

    摘要:我自己封裝這個,并不是我有造輪子的習(xí)慣,而是,都是一些常用,但是零散的小實例,網(wǎng)上基本沒有插件。,因為零散的小實例,涉及到的有字符串,數(shù)組,對象等類型,就算找到插件,在項目引入的很有可能不止一個插件。都是簡單的代碼,封裝也不難。 1.前言 因為公司最近項目比較忙,沒那么多空余的事件寫文章了,所以這篇文章晚了幾天發(fā)布。但是這也沒什么關(guān)系,不過該來的,總是會來的。好了,其他的不多說的,大家...

    plus2047 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<