美文网首页
js经典算法记录

js经典算法记录

作者: 洛阳醉长安行 | 来源:发表于2020-06-22 20:27 被阅读0次

随机数组洗牌

function foo(arr){
var newarr = arr.slice();
for(let i=0,len = arr.length;i<len;i++){
    let index = Math.floor(Math.random() * len);
    [newarr[i], newarr[index]] = [newarr[index], newarr[i]];
}
return newarr;
}
console.log(foo([1, 2, 3, 4, 5, 6, 7]));

简单的日期字符串排序

var date = ['2010-03-19', '2020-04-01', '2015-09-07', '2015-09-08'];
var aa =date.sort((a,b)=> Date.parse(b) - Date.parse(a) );
console.log(aa);

递归实现数组扁平化

function flatArr(arr){
    let tempArr=[];
    arr.forEach(item => {
        if (Array.isArray(item)){
           tempArr= tempArr.concat(flatArr(item));
        }else{
            tempArr.push(item);
        }
    });
    return tempArr;
}
console.log(flatArr([1,2,[3,4,[5,[[6]]]]]));

极简版数组扁平化

[1,2,3,[4,5,[6,[[7]]]]].flat(Infinity);

记录数组项重复次数

var arr = ['张三', '张三', 'zzz', '历史', 'zzz', 'zzz'];
function getRepeatTimes() {
var Obj = {};
arr.forEach(item => {
    Obj[item] = (Obj[item] + 1) || 1; //Obj[item]如不存在,+1为NaN
})
    return Obj;
}
console.log(getRepeatTimes(arr))

冒泡排序

function arrSort(arr = []) {
    let len = arr.length;
    for (let i = 0; i < len; i++) {
        for (let k = 0; k < len - 1 - i; k++) {
            if (arr[k] > arr[k + 1]) {
                [arr[k], arr[k + 1]] = [arr[k + 1], arr[k]];
            }
        }
    }
    return arr;
}
console.log(arrSort([5, 3, 6, 1, 9, 4, 9, 4, 8, 7, 8, 6, 2]));

快速排序(适合数据量大的排序)

function quickSort(arr) {
    if (arr.length <= 1) {   return arr; }
    var midIndex = Math.floor(arr.length / 2);
    var mid = arr.splice(midIndex, 1)[0]; //取得中间基准并删除掉
    var left = [],right = [];
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] <= mid) { //把基准两边的数据分别存放到不同分区
            left.push(arr[i]);
        } else {
            right.push(arr[i]);
        }

    }
    return quickSort(left).concat([mid], quickSort(right));
}
console.log(quickSort([4, 8, 7, 3, 5, 1, 2, 9, 0, 7, 5]))

相关文章

  • js经典算法记录

    随机数组洗牌 简单的日期字符串排序 递归实现数组扁平化 极简版数组扁平化 记录数组项重复次数 冒泡排序 快速排序(...

  • JS-经典排序算法

  • 日常总结系列

    JS实现一些经典算法:1,基于填坑思想的快排算法2,十进制转十六进制 NODEJS抓包的坑 利用request模块...

  • paxos算法个人理解

    paxos算法 常常在有关分布式的文章中看到paxos算法,于是学习了一下此经典算法,下面记录的是我的一些个人理解...

  • C++ 经典算法集锦 二

    C++经典算法实现系列2 上回我们说道,牛逼的C++可以实现很多牛逼的算法。我们继续之前的记录。 Algorith...

  • 常见算法

    一、【经典算法大全】收集51种经典算法 初学者必备

  • 12月,献上的12本Java架构师必读书籍

    经典算法谜题的合集Google、Facebook等一流IT公司算法面试必备 《算法谜题》是经典算法谜题的集结。它列...

  • 算法学习记录

    可视化算法 白话经典算法

  • leetcode 题目的一些记录

    leetcode 上面有很多经典的算法问题,从易到难,也是各种大公司喜欢问的一些算法问题。先做个记录。 Two S...

  • 链表数据结构js实现

    最近再看学习js数据结构与算法这本书,根据书上的例子和方法实现了一下。记录如下:

网友评论

      本文标题:js经典算法记录

      本文链接:https://www.haomeiwen.com/subject/ydvffktx.html