arr.sort():默认安字符串升序排列;
自定义排序:2步:首先定义比较器函数!其次将比较器函数传递给sort方法!
什么是比较器?定义任意两值比较策略的方法
js中方法也是一个比较器,方法名就是指向方法对象的变量名!
function compare(a,b){return a-b;}//可以定义在使用前后的任何位置,原因是var声明和function声明自动提前!
相当于var compare=new Function("a","b","return a-b");//必须定义在使用之前,原因仅声明提前,赋值不提前!
arr.sort(compare);将方法作为对象传递是,仅使用方法名,后不加圆括号。
降序:颠倒比较结果,可以导致升序变降序。
升序:function compare(a,b){return a-b;}
颠倒:function compare(a,b){return -(a-b);}
栈和队列:
什么是栈?先进的后出,栈其实就是数组,只不过用一对儿方法模拟了栈的操作!
结尾入栈出栈:元素下标始终不变
入栈:arr.push() 出栈:var last=arr.pop(); LIFO
开头入栈出栈:所有元素下标岁入栈出栈操作而变化
第一个元素[0],始终最新
入栈:arr.unshift(值1,....)
出栈:var first=arr.shift()
只能从数组一端出栈,入栈。另一端封闭!
案例:十进制转换为二进制
1 var bin=[];2 var num=131;3 while(num!=0){4 bin.push(num%2);5 num=parseInt(num/2);6 };7 bin.reverse();8 document.write(bin.join(""));
队列:FIFO,凡是需要排队的实现都需要队列。
案例:排队购票
1 var count=5; 2 var queue=[]; 3 for (var i=1;i<=5;i++){ 4 queue.push("顾客"+i); 5 } 6 queue.push("你"); 7 document.write("当前排队个数:"+""); 8 while(count>0){ 9 var custom=queue.shift();10 document.write(custom+"抢购成功");11 count--;12 }13 document.write(queue+"没抢上");
二维数组:数组的元素又是另外一个数组对象!
创建二位数组:创建普通数组完全一样,只不过将普通元素,换为一个数组对象而已
例如:var arr=[1,2,3]
var arr2=[[1,2,3],[4,5,6],[7,8]];
arr2[3]=[11,12,13];
如何访问二位数组中的任意元素:arr[父数组中的下标][子数组中的下标]
案例:访问二维数组元素
1 var arr2=[];2 arr2[0]=[101];3 arr2[1]=[201,202];4 arr2[2]=[301,302,303];5 document.write(arr2[2][1]+"");
如何使用二维数组:数组包含明显上下级关系;
内置对象:内置对象就是ECMAScript标准中已经定义好的,由浏览器厂商已经实现的标准对象!内置对象中封装了专门的数据和操作数据常用的API
JS中内置对象列表: -String/Boolean/Number/Array/Date/Mate/Error/Function/Object/Global
包装类型:专门封装原始类型数据,并且提供给数据常用操作的内置类型。
包装类型有:String类型、Number类型、Boolean类型
何时使用包装类型:只要用原始类型的数据调用方法或访问属性时,js引擎都会自动创建对应的包装类型对象,方法调用完后,对象自动释放!
创建原始类型字符串变量:var gender="男";
创建引用类型字符串对象:var carType=new String("BMW528Li");
转义字符:
字符串的使用:js中字符串一单创建不可改变
String包装类型;str.length:返回str字符串中的字符个数,比如:str="Hello 马里奥" //str.length 8
大小写转换的方法:
str=str.toLowerCase():都转为小写
str=str.toUpperCase():都转为大写
何时使用:希望大小写一视同仁时,就要先转换,再处理。
案例:邮箱重复校验
1 var emails=[]; 2 var input=prompt("请输入邮箱:"); 3 emails.push(input.toLowerCase()); 4 input=prompt("请输入第二个邮箱:") 5 var i; 6 for(i=0;i