一些JS算法面试题,javascript数字数组去重复项的实现代码

test.htm

1.数组去重

有两个方法,一个用对象,一个用数组的indexOf方法

Array.prototype.unique = function(){

     var res = [];

     var json = {};

     for(var i = 0; i < this.length; i++){

          if(!json[this[i]]){

               res.push(this[i]);

               json[this[i]] = 1;

          }

     }

     return res;

}

=====================================================

function unique(arr){

    var newArr = [];

    for(var i = 0; i < arr.length; i++) {

        if(newArr.indexOf(arr[i]) == -1) {

        newArr.push(arr[i]);

     }

}

return(newArr);

}

复制代码 代码如下:

2.清除开头结尾的空格

function trim(str){

    return str.replace(/^\s+/,””).replace(/\s+$/,””);

}

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“;
<html xmlns=”;
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″
/>
<title>array-remove-repeate</title>
<style>
.tt{ background-color:#006699; height:3px; overflow:hidden;}
</style>

3.冒泡排序

function bubbleSort(arr){

    var temp; 

    for(var i=0;<arr.length ; i ++){

        for(var j = 0;j < arr.length – 1;j ++){

            if(arr[i] < arr[j]){

                   temp = arr[i];

                  arr[i] = arr[j];

                  arr[j] = temp;

            }

       }

  }

return arr;

}

</head>

4.字符串中出现次数最多的字母

function findItem(str){

        var maxLength = 0;

        var result =‘’;

         while(str !=‘’){

                  var oldStr = str;

                   var getStr = str.substr(/”+ getStr +“/g,’’);

                   str = str.replace(new RegExp(getStr,”g”),””);

                    if(oldStr.length-str.length > maxLength){

                                 maxLength = oldStr.length-str.length;

                                 result = getStr + “=” + maxLength;

                      }

             }

            return result;

}

<body>
<div class=”tt”></div>
<div class=”result” id=”result”></div>
<script>

5.闭包

var boxes = document.getElementsByTagName(“div”);

           for(var i = 0; i < boxes.length; i++) {

          boxes[i].index =i+1;//保存起来

           boxes[i].onclick = function() {

                    alert(this.index);

          }

}

if(!console)
{
var console={};
console.log=function(str){alert(str);}
}

Array.prototype.unique1 = function () {
var r = new Array();
label:for(var i = 0, n = this.length; i < n; i++) {
for(var x = 0, y = r.length; x < y; x++) {
if(r[x] == this[i]) {
continue label;
}
}
r[r.length] = this[i];
}
return r;
}

Array.prototype.unique2 = function () {
return
this.sort().join(“,,”).replace(/(,|^)([^,]+)(,,\2)+(,|$)/g,”$1$2$4″).replace(/,,+/g,”,”).replace(/,$/,””).split(“,”);
}

Array.prototype.unique3 = function() {
var temp = {}, len = this.length;
for(var i=0; i < len; i++) {
var tmp = this[i];
if(!temp.hasOwnProperty(tmp)) {
temp[this[i]] = “my god”;
}
}

len = 0;
var tempArr=[];
for(var i in temp) {
tempArr[len++] = i;
}
return tempArr;
}
Array.prototype.unique4 = function () {
var temp = new Array();
this.sort();
for(i = 0; i < this.length; i++) {
if( this[i] == this[i+1]) {
continue;
}
temp[temp.length]=this[i];
}
return temp;

}

var test=(function()
{
var arr2=[];
for(var i=0;i<2000;i++)
{
var t=i;
t=parseInt(Math.random()*2000)+1;
arr2[i]=(t.toString());

}
//arr2=[“zhoujian”,”zhou”,”zhou”];
return function(){
return arr2;
//return [1,2,3,3];
};

})();
window.onload=function(){

//
Watch.start(“Cost times1:”);
var arr= test();
console.log(arr.length );

arr=arr.unique1();
console.log(arr.length);