1. 数组排序
  2. 内建对象Math、String
  3. hash数据处理
  4. 随机取色,随机验证码
  5. 模糊查询

遍历:

for循环:遍历数组的每一个元素,包含空元素,以数字下标遍历所有元素,不包含数组的属性和方法

forEach遍历除空元素外的所有其他元素不遍历数组的属性和方法

for(i in arr)将数组的下标转换为字符串,并且遍历所有非空元素和数组的方法和属性

排序:

  • 1
    
    var arr=[2,3,6,9,4,1,5,8,11,7];
    
  • 桶排序

  • 1
    2
    3
    4
    5
    6
    
    var obj={};
    for(var i=0;i<arr.length;i++){
        obj[arr[i]]=arr[i];
    }
    console.log(obj);
    //将数组内容转换为对象中,自动按照下标排序
    
  • 冒泡排序

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    
    for(i=0;i<arr.length;i++){
        for(j=0;j<arr.length-1-i;j++){
            if(arr[j]>arr[j+1]){
                var temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
    
  • 选择排序

  •  1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    for(var i=0;i<arr.length;i++){
        var min=i;
        for(j=i+1;j<arr.lemgth;j++){
            if(arr[min]>arr[j]) min=j;
        }
        if(i!==min){
            var temp=arr[i];
            arr[i]=arr[min];
            arr[min]=temp;
        }
    }
    
  • 快速排序 ===> 递归

  •  1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    function quickSort(elem){
        if(elem.length<=1) return elem;
        var pivotIndex=Math.floor(elem.length/2);
        var pivot=elem.splice(pivotIndex,1)[0];
        var left=[];var right=[];
        for(var i=0;i<elem.length;i++){
            if(elem[i]<pivot) left.push(elem[i]);
            else right.push(elem[i]);
        }
        return quickSort(left).concat([pivot],quickSort(right));
    }
    arr=quickSort(arr);
    console.log(arr);
    

reverse:

  • 1
    2
    3
    
    var arr=[1,2,3,4,5,6,7];
    var arr1=arr.reverse();
    console.log(arr1);
    
  • 反转数组,返回原数组

  •  1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    function array_reverse(arr){
        for(var i=0;i<parseInt(arr.length/2);i++){
            var temp=arr[arr.length-1-i];
            arr[arr.length-1-i]=arr[i];
            arr[i]=temp;
        }
        return arr;
    }
    array_recerse(arr);
    console.log(arr);
    

sort:

  • 默认转换为字符串排序,数字按照第一位排序(Ascii码)

  • 中文按照UTF-8排序

  • 重构采用选择排序

  • 数组实现随机排序:

  • 1
    2
    3
    4
    5
    6
    7
    
    var arr=[1,2,3,4,5,6,7,8,9];
    arr.sort(function(){
        return Math.random()-0.5;
        //随机数的减数大于0.5的概率增大时,数组中从大到小的概率变大
        //随机数的减数小于0.5的概率增大时,数组中从小到大的概率变大
    })
    console.log(arr);
    
  • 随机生成0-99以内的10个数:

  •  1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    
    //1、
    var arr=[];
    while(arr.length<10){
        var n=parseInt(Math.random()*100);
        if(arr.index(n)<0) arr.push(n);
    }
    consle.loh(arr);
    //2、
    var arr=Array(100).fill(0).map(function(item,index){return index});
    arr.sort(function(){return Math.random()-0.5});
    arr.length=10;
    console.log(arr);
    

二维数组:

  • 1
    2
    3
    4
    5
    6
    7
    8
    
    var arr=[];
    for(var i=0;i<10;i++){
        arr[i]=[];
        for(var j=0;j<10;j++){
            arr[i][j]=i*10+j;
        }
    }
    console.log(arr[5][6]);
    

Math:

Math.PI:角度转弧度:Math.PI/180*60//角度转弧度

Math.abs()绝对值

Math.ceil(-3.6);向上取整//-3

Math.floor(-3.6);向下取整//-4

Math.round(-3.6);四舍五入//-4

求数组的最大/最小值:

1
2
console.log(Math.max.apply(null,arr));//求数组的最大值
console.log(Math.min.apply(null,arr));//求数组的最小值

Math.pow(2,2);//4:求幂

Math.sqrt(4);开根号

Math.random();//0-1:随机数;不包含0/1

随机取一个范围的值:

1
2
3
function random(min,max){
    return Math.floor(Math.random()*(max-min)+min);
}

随机取色:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//1
function randomColor(){
    var col="#";
    for(var i=0;i<6;i++)
        col+=Math.floor(Math.random()*16).toString(16);
    return col;
}
//2
function randomColor(){
    var col="rgb(";
    for(var i=0;i<3;i++)
        col+=Math.floor(Math.random()*256)+",";
    col=col.slice(0,-1)+")";
    return col;
}
//3
function randomColor(a,r,g,b){
    var col="rgba(";
    for(var i=0;i<3;i++)
        col+=((isNaN(arguments[i+1]) || arguments[i+1]>255 || arguments[i+1]<0) ? Math.floor(Math.random()*256) : Math.floor(arguments[i+1]))+",";
    col+=(isNaN(a) ? Math.random().toFixed(2) : a)+")";
    return col;
}

String:

var str="abc";字符串不能修改

console.log(str.length);字符串长度是只读属性

console.log(str[0]);可以使用下标获取元素,只读===str.charAt(0)

str.charCodeAt(0);获取第0个字符Ascii

indexOf/lastIndexOf 查找字符在字符串中的下标

includes:判断是否在字符串中存在

search用于正则表达式查找

match用于正则表达式

replace替换并且返回新字符串,用于正则表达式

slice

substr从第几个开始截取,第二个参数代表截取多少个字符,开始位置可以使用负数,倒数第几个

substring从下标为几开始到多少结束的字符串,不能从负数开始==>默认为0;可以倒着截取

"abc".toUpperCase()/ "ABC".toLowerCase() 转换大小写

首字母大写

split与数组的join相反,以什么分割;正则表达式切割

1
2
var str="a#b#c#d#e#f";
console.log(str.split("#"));

地址栏search/hash数据变成对象:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
var url="http://www.163.com/new/index.html?token=ashjd2i1nsdh21df2123&name=xietian&age=30";
function getObject(url){
    return url.split("?")[1].split("&").reduce(function(value,item){
        var arr=item.split("=");
        value[arr[0]]=isNaN(arr[1]) ? arr[1] : Number(arr(1));
        return value;
    },{});
}
var 0=getObject(url);
console.log(o);

随机验证码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
var str=getAuth();
console.log(str);
function getAuth(){
    var arr=[];
    for(var i=48;i<123;i++){
        if(i>57 && i<65) continue;
        if(i>90 && i<97) continue;
        arr.push(String.fromCharCode(i));
    }
    arr.sort(function(){
        return Math.random()-0.5;
    })
    arr.length=4;
    return arr.join("");
}

模糊查找

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<input type="text" id="input">
<ul id="ul">
</ul>
var arr=[
    {id:1001,name:"计算器",price:26},
    {id:1002,name:"计算机",price:26},
    {id:1003,name:"飞机",price:26},
    {id:1004,name:"飞行器",price:26},
    {id:1005,name:"算盘",price:26},
    {id:1006,name:"电器",price:26},
    {id:1007,name:"电视机",price:26},
]
var input=document.getElementById("input");
var ul=document.getElentById("ul");
input.onput=function(){
	ul.innerHtml=arr.reduce(function(value,item){
		if(item.name.indexOf(input.value)>-1) value+="<li>"+item.name+"</li>";
		return value;
	},"");
}