码迷,mamicode.com
首页 > 编程语言 > 详细

JS经典算法

时间:2020-01-07 18:12:27      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:cli   方法   oar   根据   fine   ===   功能   rev   b16   

JS经典算法:
// 1、字符串颠倒
str.split(‘‘).reverse().join(‘‘)
 
// 2、不借助中间量,颠倒a、b
a=[b,b=a][0]
 
// 3、快速获取数组的最大值、最小值
Array.prototype.max = function () {
    return Math.max.apply(null, this)
}
Array.prototype.min = function () {
    return Math.min.apply(null, this)
}
 
// 4、模拟数组的一些方法
// 4.0 先扩充类型的基本功能
Function.prototype.method = function (name, func) {
    if (!this.prototype[name]) {
        this.prototype[name] = func;
    }
    return this;
}
// 4.1 pop()方法:删除数组最后一个元素,并返回该元素
Array.method(‘pop‘, function () {
    return this.splice(this.length - 1, 1)[0]
})
// 4.2 push()方法:在数组末尾添加元素,并返回新数组的长度
// Array.method(‘mypush‘, function () {
//     this.splice.apply(this, [this.length, 0]).
//         concact(Array.prototype.slice(arguments))
//     return this.length
// })
// 4.3 shift()方法:删除数组第一个元素,并返回该元素
Array.method(‘shift‘, function () {
    return this.splice(0, 1)[0]
})
// 4.4 unshift()方法:在数组前面添加新元素,并返回该元素
Array.method(‘unshift‘, function () {
 
})
 
// 5、数组去重
// 5.1 利用对象判断去重
Array.prototype.fillRepeat = function () {
    var result = []
    var hash = {}
    for (var i = 0; i < this.length; i++) {
        if (hash[this[i]] === undefined) {
            result.push(this[i])
        }
        hash[this[i]] = true
    }
    return result
}
// 5.2 利用数组下标去重
Array.prototype.fillRepeat = function () {
    var result = []
    for (var i = 0; i < this.length; i++) {
        if (this.indexOf(this[i]) === i) {
            result.push(this[i])
        }
    }
    return result
}
// 5.3 先排序,后去重
Array.prototype.fillRepeat = function  {
    var result = []
    this.sort()
    for (var i = 0; i < this.length; i++) {
        if (this[i] !== result[result.length - 1]) {
            result.push(this[i])
        }
    }
    return result
}
 
// 6、数组排序
// 6.1 快速排序
function quickSort (arr) {
    if (arr.length <= 1)  return arr
    var lfArr = [], rtArr = [], q = arr[0]
    for (var i = 1; i < arr.length; i++) {
        if (arr[i] < q) {
            lfArr.push(arr[i])
        } else {
            rtArr.push(arr[i])
        }
    }
    return     quickSort(lfArr).concact(q, quickSort(rtArr))
}
// 6.2 冒泡排序
 
Array.prototype.bubbleSort = function () {
    var tem;
    for (var i =0; i < this.length -1; i++) {
        for (var j = 0; j < this.length - i -1; j++) {
            if (this[j] > this[j+1]) {
                tem = this[j];
                this[j] = this[j+1];
                this[j+1] = tem;
            }
        }
    }
    return this;
}
 
// 6.3 根据不同的类型进行排序
by = function (a, b) {
    if (a === b) return 0
    if (typeof a === typeof b) {
        return a < b ? -1 : 1
    }
    return typeof a < typeof b ? -1 : 1
}
 

技术图片技术图片技术图片技术图片技术图片

 

JS经典算法

标签:cli   方法   oar   根据   fine   ===   功能   rev   b16   

原文地址:https://www.cnblogs.com/webenjoy/p/12162851.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!