7.4 for-in
使代码更加的简洁
7.5 数组的应用
1.查找
a.顺序查找
var a = [3,7,11,43,87,5,99,56,82,16];
var num = Number(prompt("请输入要查找的值"));
var index = -1;//最初认为要找的值不在数组中
for(var i in a){
if(a[i] == num){
index = i;
break;
}
}
alert(index);
方法最简单,单查找次数与数据量成正比,效率不够
b.折半查找(二分查找)
假设在一个已有序的数组中,可以利用折半查找大幅度提高效率
var a = [3,7,11,43,87,5,99,56,82,16];
var num = Number(prompt("请输入要查找的值"));
var index = -1;//最初认为要找的值不在数组中
var start = 0;
var end = a.length - 1;
while(start < end){
var mid = Math.ceil((start + end) / 2);
if(num == a[mid]){
index = mid;
break;
}else {
if(num > a[mid]){
start = mid + 1;
}else {
end = mid - 1;
}
}
}
alert(index);
折半查找的最坏查找次数与数据量
2.冒泡排序
var a = [3,7,11,43,87,5,99,56,82,16];
for (var i = 0; i < a.length - 1; i++) {
for (var j = 0; j <= a.length - i - 1; j++) {
if (a[j] > a[j + 1]) {
//不满足升序就对调
var t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
alert(a.toString());
3.队列
先进先出(FIFO)在头部出队,在尾部入队
4.堆栈
先进后出(FILO)在尾部进栈,在尾部出队
字符串的定义:定义一个变量,然后将字符串赋值给他
访问
访问字符串里的字符,和数组一样(str[i])或字符串方式charAT(i)
查找
search:(字符串方式)传入的参数,返回子串第一个字符在父串中的下标
取子串
substr(start,length):传入参数,开始截取的下标和截取的长度
substring(start,end):传入参数,开始和终点,不包括终点
替换
replace()替换(传入的参数)第一个参数被取出,第二个插入
split(x):字符串的分割,用“x”分割,是一个数组,用toString方法转换为字符串
toUpperCase()转换为大写
toLowerCase()转换为小写
trim,去掉字符串收尾空格
var str =(" 请输入一个英文字符串 ");
str = str.trim();
alert(str);
定义:
var d = new Date();
var d = new Date(2017,3,22,8,30,22);
不给参数,定义日期为执行指令时的系统日期
也可以手动指点,从0开始,0为1月
修改日期分量
setYear、setHour、
获取日期分量
getYear、getTime
getMilliseconds:获取毫秒分量
getTime:从1970到指定时间的毫秒
日期比较:d1>d2,d1-d2:两个日期相隔的毫秒数
便捷计算某月天数
var mouth = 2;
var d = new Date(2017,mouth,0);
document.write(d.getDate()+"<br>");
9.4其它对象
Math对象
Math.max(n1,n2,n3) 取最大值
Math.min(n1,n2,n3) 取最小值
Math.PI 获得π的值
Math.E 获得E的值
Math.pow (x,y)获得x的y次方
Math.sqrt(x)获得x的平方根
Math.abs(x)获得x的绝对值
Math.ceil(x)向上取整
Math.floor(x)向下取整
Math.round(x)x四舍五入
Number对象
toExponential(x)对象的值转换为指数计数法。
toFoxed(x)数字转换为字符串,结果的小数点后有指定位数的数字。
toPrecision(x)数字格式化为指定的长度。