代码编织梦想

1、用JS手写快速排序

快排三步曲:

(1)在数据集之中,选择一个元素作为“基准”(pivot)。
(2)所有小于“基准”的元素,都移到“基准”的左边;所有大于“基准”的元素,都移到“基准”的右边。
(3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。

var arr = [55, 66, 18, 10, 20, 30, 1, 2, 3, 12, 2];
var result = quickSort(arr);
console.log('结果: ' + result);
function quickSort(tempArr) {
    if (tempArr.length <= 1) {
        return tempArr;
    }
    //第一步取基准值
    var midIndex = Math.floor(tempArr.length / 2);
    var midValue = tempArr.splice(midIndex, 1);
    console.log(midValue);
    //第二步分左右
    var left = [];
    var right = [];
    for (var i = 0; i < tempArr.length; i++) {
        if (midValue > tempArr[i]) {
            left.push(tempArr[i]);
        } else {
            right.push(tempArr[i]);
        }
    }
    console.log('left:',left, 'midValue:' + midValue, 'right:', right);
    //第三步 重复第一步和第二步
    // console.log(left.concat(midValue, right));
    return quickSort(left).concat(midValue, quickSort(right));
}

2、判断一个字符串中出现次数最多的字符,统计这个次数

var str = '112223333iiiii';
var obj = {};
for (var i = 0; i < str.length; i++) {
    obj[str[i]] ? obj[str[i]]++ : obj[str[i]] = 1;
}
console.log(obj);
var maxCount = 0;
var keyStr = '';
for (var key in obj) {
    if (obj[key] > maxCount) {
        maxCount = obj[key];
        keyStr = key;
    }
}
console.log('出现最多的字符是:'+keyStr, '次数是:' + maxCount);

 

3、Javascript面向对象中继承实现

在js中使用原型实现继承。将子类的原型设置为父类的一个具体实例

function HTTPRequest(){
    }
    HTTPRequest.prototype.HTTPGET = function () {
        console.log('GET');
    };
    HTTPRequest.prototype.HTTPPOST = function () {
        console.log('POST');
    }

    var httpRequest = new HTTPRequest();
    //注册
    function Register(){
    }
    Register.prototype = httpRequest;
    //登陆
    function Login(){
    }
    Login.prototype = httpRequest;
    //退出
    function Logout(){
    }
    Logout.prototype = httpRequest;
    /**
     * 注册
     */
    var reg = new Register();
    reg.HTTPGET();
    reg.HTTPPOST();

4、数组去重

 var arr = [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, '1', '2'];
    result = [];
    hash = {};
    var type = '';
  
    for (var i = 0; i < arr.length; i++) {
        type = typeof arr[i];
        if (!hash[arr[i]+type]) {
            result.push(arr[i]);
            hash[arr[i]+type] = 200;
        }
    }
    console.log(result);
    console.log(hash);//{1number: 200, 2number: 200, 3number: 200, 4number: 200, 5number: 200, …}

5、类型检测(函数实现)

1.检测string类型

function checkString(obj) {
    return typeof(obj) == "string";
}
alert(checkString(666));
alert(checkString("666"));

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/huohuoit/article/details/106243861

ES6中 async 与await的使用-爱代码爱编程

ES6中 async 与await的使用 async用于修饰函数await用于修饰promise对象await必须配合async使用async修饰的函数返回值为promise 对象async与await使用的基本结构 async function testFunc(){ console.log('testFunc执行了.....');

codewars,js实现5kyu:ntegers: Recreation One-爱代码爱编程

目录 题目描述Example我完成代码我的思路难点 题目描述 该kata的链接地址: link. Divisors of 42 are : 1, 2, 3, 6, 7, 14, 21, 42. These divisors squared are: 1, 4, 9, 36, 49, 196, 441, 1764. The sum of th

cookie,localstorage和sessionstorage-爱代码爱编程

cookie的概念 cookie又叫会话跟踪技术是由Web服务器保存在用户浏览器上的小文本文件,它可以包含相关用户的信息。无论何时用户链接到服务器,Web站点都可以访问Cookie信息。比如:自动登录、记住用户名,记住一些和用户相关的信息等 cookie的特点 -禁用cookie后,无法正常注册登陆; -cookie是与浏览器相关的,不同浏览器之间所保存

7、浏览器对象-爱代码爱编程

Window对象 关于BOMScreen对象Navigator对象Window对象Location对象History对象一、关于BOM 1.1、BOM是什么? ​ BOM(Browser Object Model):浏览器对象模型。描述了与浏览器进行交互的一些方法和接口。 1.2、BOM的组成 Screen:显示器屏幕对象(了解)Navigato

8、文档对象-爱代码爱编程

文档对象 关于DOMNode对象Document对象Element对象Attr对象Text对象Comment对象一、关于DOM 1.1、什么是DOM? ​ DOM(document Object Model),文档对象模型,用于处理网页内容的一些方法和接口。 1.2、节点继承关系图 1.3、DOM树中的基本节点 Document:文档对象E

JS对象模式高级-爱代码爱编程

对象创建模式 1. Object构造函数模式 套路:先创建空Object对象,再动态添加属性/方法适用场合:起始时不确定对象内部数据缺点:语句太多var p={} p.name='TOM' p.age=12 p.setName=function(name){ this.name=name } 2. 对象字面量模式 套路:使用{}创建对象,同

codewars,js实现5kyu:ntegers: Recreation One-爱代码爱编程

目录 题目描述Example我完成代码我的思路难点 题目描述 该kata的链接地址: link. Divisors of 42 are : 1, 2, 3, 6, 7, 14, 21, 42. These divisors squared are: 1, 4, 9, 36, 49, 196, 441, 1764. The sum of th

动态规划-数组-爱代码爱编程

题目列表 leetcoe 面试题 16.17. 42.连续数列最大和leetcode.1143. 最长公共子序列leetcode. 300最长上升子序列数组和凑数字leetcode. 三步问题 leetcoe 面试题 16.17. 42.连续数列最大和 题目 给定一个整数数组,找出总和最大的连续数列,并返回总和。示例 输入: [-2,1,-

力扣 680. 验证回文字符串 Ⅱ-爱代码爱编程

题目 链接:680. 验证回文字符串 Ⅱ 解题过程 该题为简单等级,我一看题目是回文字符,立马想到了从两端开始验证,如果相等就继续验证下一个,如果不相等就不为回文串。不过这个题目不同的地方就是他有一次删除机会。那就加一个信号吧,如果flag为1,那碰到不同的情况就证明不是回文串。否则,就判断一下,不用真的删掉这个字符,我们只需要将指针往后或者往前移

如何理解dfs-输出全排列问题?-爱代码爱编程

DFS-深度优先搜索 例题一:输出数的全排列例题二:🆗🆗🆗+🆗🆗🆗=🆗🆗🆗 例题都是来自《啊哈!算法》,全排列的代码也是来自该书的(稍微改了一下) 例题一:输出数的全排列 以有6张牌为例,图示说明如下,我前面的那个标记性数组的元素只要前面标记成了true , 后面依次 遍历这个bool数组的时候,只会把false元素放到盒子a里面,所以每次

8644堆排序-爱代码爱编程

时间限制:1000MS 代码长度限制:10KB 题型: 编程题 语言: G++;GCC Description 用函数实现堆排序,并输出每趟排序的结果 输入格式 第一行:键盘输入待排序关键的个数n 第二行:输入n个待排序关键字,用空格分隔数据 输出格式 第一行:初始建堆后的结果 其后各行输出交换堆顶元素并调整堆的结果,数据之间用一个空格分隔

数据结构与算法 #001_开篇词,心态与意识-爱代码爱编程

文章目录 1、引例:网站用户系统2、成为一名优秀的工程师3、学习思路 ❤️阅文后请用一句话总结您的心得和建议!❤️ 博客更新&阅读指南(想了解更多最新信息,请点击!)1、引例:网站用户系统 想象一下,开发一个网站的用户系统。这个用户系统的功能之一是,对某个尝试登录用户的ID去核实是否合法,这就需要去存储着海量数据的数据库中查找这个I