常见js算法
1.比较两个数组
Array.prototype.diff = function(a) {
return this.filter(function(i) {return a.indexOf(i) < 0;});
};
////////////////////
// Examples
////////////////////
[1,2,3,4,5,6].diff( [3,4,5] );
// => [1, 2, 6]
["test1", "test2","test3","test4","test5","test6"].diff(["test1","test2","test3","test4"]);
// => ["test5", "test6"]
2.数组去重
var arr = ['a', 'b', 'c', '1', 0, 'c', 1, '', 2,1, 0];
/* function unique(){
var ret = [];
for(var i =0; i<arr.length;i++){
var item = arr[i];
if(ret.indexOf(item) === -1){ // IE6-IE8以下没有indexof()方法。
ret.push(item);
}
}
return ret;
}*/
function unique(){
var ret = [];
var hash = {};
for (var i = 0; i < arr.length; i++) {
var item = arr[i];
var key =typeof(item)+item;
if(hash[key] != 1){
ret.push(item);
hash[key] = 1;
}
};
return ret
}
3.数组从小到大排序
var arr = [1,0,10,3,5,6,2];
arr.sort(function(a,b){
return a - b; //从小到大排序
})
4. 10秒倒计时定时器
var seconds = 10;
var timeAlarm = setInterval(showTime,1000);
function showTime(){
seconds -= 1;
console.log(seconds);
if (seconds == 0) {
clearInterval(timeAlarm);
};
};
5.快速排序
快排的思想:
在数据集之中,选择一个元素作为"基准"(pivot)。
所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。
对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
快排最坏时间O(n2),最好时间O(nlgn)
function quickSort(arr){
if(arr.length <= 1){ return arr;}
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex,1)[0];
var left = [] ,right =[];
for(var i = 0;i<arr.length;i++){
if(arr[i] > pivot){
right.push(arr[i]);
}else{
left.push(arr[i]);
}
};
return quickSort(left).concat([pivot],quickSort(right));
};
var data =[85,24,63,45,17,31,96,50];
console.log( quickSort(data) );
6.随机选取从10-100的10个数字。
var iArray =[];
function getRandom(iStart,iEnd){
var iChoice = iStart-iEnd+1;
return Math.abs(Math.floor(Math.random()*iChoice))+iStart;
}
for(var i=0;i<10;i++){
iArray.push(getRandom(0,10))
};
7.去掉字符串中所有空格(包括中间空格,需要设置第2个参数为:g)
function Trim(str,is_global)
{
var result;
result = str.replace(/(^\s+)|(\s+$)/g,"");
if(is_global.toLowerCase()=="g")
{
result = result.replace(/\s/g,"");
}
return result;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。