排序及内建对象的应用
Contents
- 数组排序
- 内建对象Math、String
- hash数据处理
- 随机取色,随机验证码
- 模糊查询
遍历:
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
求数组的最大/最小值:
|
|
Math.pow(2,2);
//4:求幂
Math.sqrt(4);
开根号
Math.random();
//0-1:随机数;不包含0/1
随机取一个范围的值:
|
|
随机取色:
|
|
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相反,以什么分割;正则表达式切割
|
|
地址栏search/hash数据变成对象:
|
|
随机验证码:
|
|
模糊查找
|
|
Author Ankang
LastMod 2021-03-24