var arr = [1, 2];
var _arr = [].slice.call(arr, 0);
// 实现一个bind函数
Function.prototype.bind = function(ctx) {
var _this = this;
var arg = [].slice.call(arguments, 1);
var fBind = function() {
return _this.apply(ctx, arg.concat([].slice.call(arguments)))
}
return fBind;
}
// 快速排序
var quickSort = function(arr) {
if (arr.length <= 1) return arr;
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for(var i = 0; i < arr.length; i++) {
if(arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
}
// 冒泡排序
var bubbleSort = function(arr) {
for(var i = 0; i < arr.length; i++) {
for(var j = i + 1; j < arr.length; j++) {
if(arr[i] > arr[j]) {
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
// 利用对象原理去重
var distinct = function(arr) {
var obj = {}, result = [];
for(var i = 0; i < arr.length; i++) {
if(!obj[arr[i]]) {
obj[arr[i]] = 1;
result.push(arr[i]);
}
}
return result;
}
// 普通去重
var distinct1 = function(arr) {
var result = [];
for(var i = 0; i < arr.length; i++) {
for(var j = i + 1; j < arr.length; j++) {
if(arr[i] === arr[j]) {
j = ++i
}
}
result.push(arr[i]);
}
return result;
}
// indexOf去重
var distinct2 = function(arr) {
var result = [];
arr.forEach(function(v, i) {
var bool = arr.indexOf(v, i + 1);
if(bool === -1) {
result.push(v);
}
})
return result;
}
js 常用算法
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 数组的常用方法 增加,删除和替换:都是影响原始数组push()pop()unshift()shift()splic...