1.测试变量的数据类型 ---- typeof
"undefined" ----- 如果这个值未定义
2.测试数字是否位于最大数和最小数之间 ----- isFinite()
var result = Number.MAX_VALUE + Number.MIN_VALUE;
alert( isFinite(result)); //false
3.判断一个参数是否"不是数值",它会努力尝试将这个参数转换为数值 ------ isNaN()
alert(isNaN(NaN)); //true
alert(isNaN(10)); //false
alert(isNaN("10")); //false
alert(isNaN("blue")); //true
alert(isNaN(true)); //false
4.非数值转换为数值 ------ Number() 、 parseInt() 、parseFloat()
var num1 = Number("hello world"); //NaN
var num2 = Number(" "); //0
var num3 = Number("0000011"); //11
var num4 = Number(true); //1
var num5 = parseInt("0xA"); //10(十六进制数)
var num6 = parseInt("070"); //56(八进制数)
var num7 = parseInt("1234blue"); //1234
var num8 = parseInt(" "); //NaN
var num9 = parseInt(22.5); //22
十六进制指定基数可不带0x
var num10 = parseInt("AF" , 16); //175
var num11 = parseInt("AF"); //NaN
指定基数
var num12 = parseInt("10" , 2); //2(按二进制进行解析)
var num13 = parseInt("10" , 8); //8(按八进制进行解析)
var num14 = parseInt("10" ,10); //10(按十进制进行解析)
var num15 = parseInt("10" , 16); //16(按十六进制进行解析)
var num16 = parseFloat("1234blue"); //1234整数
var num17 = parseFloat("0xA"); //0
var num18 = parseFloat("22.5"); //22.5
var num19 = parseFloat("22.34.5"); //22.34
var num20 = parseFloat("0980.5"); //980.5
var num21 = parseFloat("3.125e7"); //31250000
5.检测数组 ------ instanceof isArray()
if (value instanceof Array) {
//假定单一全局执行环境 ECMAScript3
}
if (Array.isArray(value)) {
//ECMAScript5
}
6.数组的插入和删除 ------ push() 、pop() 、 shift() 、unshift()
var array = new Array();
push() : 向数组尾部增加元素,返回新数组的长度
var pushLength = array.push("value1","value2");
alert(pushLength); //2
pop() : 移除数组最后一项,并返回移除的项
var item = array.pop();
alert(item); //value2
unshift() : 向数组的头部增加元素,返回新数组的长度
var unshiftLength = array.unshift("value3");
alert(unshiftLength); //2
shift() : 移除数组的第一项,并返回移除的项
var itemShift = array.shift();
alert(itemShift); //value1
7.数组的操作方法 - 删除、插入、替换 -------splice()
主要是用途是向数组中部插入项
插入:可以向指定位置插入任意数量的项,需提供3个参数:起始位置、0(要删除的项数)、要插入的项
splice(2,0,"red","blue") //从数组的位置2开始插入
删除 :可以删除任意数量的项,只需提供2个参数:要删除的第一项的位置和要删除的项数
splice(2,2) //从数组位置2开始删除,删除2项
替换:向数组指定位置插入任意数量的项,且同时删除任意数量的项,只需提供3个参数:起始位置、要删除的项数、要插入任意数量的项
splice(2,2,"red","blue"); // 从数组位置2开始删除,删除2项,然后再从位置2开始插入字符串"red","blue"
8.数组的重排序 ------ reverse() 、sort()
var array = [0,1,5,10,15];
sort() : 根据字符串的顺序进行排序
array.sort();
alert(array); // 0,1,10,15,5
reverse() : 反转数组顺序
array.reverse();
alert(array); //5,15,10,1,0
实用升序排序:为sort()函数传递一个比较函数作为参数
function compare(value1,value2) { //升序排列
if (value1 < value2) {
return -1; //升降序控制
} else if (value1 > value2) {
return 1; //升降序控制
} else {
return 0;
}
}
array.sort(compare);
alert(array); //0,1,5,10,15
简化版的compare函数
function simpleCompare(value1,value2) {
return value2 - value1;
}
9.在数组中截取新数组,该操作不会影响原数组 ------ slice()
var array = [1,2,3,4,5,6,7,8,9];
var array1 = array.slice(3); //4,5,6,7,8,9
var array2 = array.slice(2,4); //3,4
10.数组构建 ------ concat()
var array = [1,2,3];
var array1 = array.concat(4,5); //array1 : 1,2,3,4,5
var array2 = array.concat([4,5,6]); //array2 : 1,2,3,4,5,6
var array3 = array.concat(4,5,[6,7,8]); //array3 : 1,2,3,4,5,6,7,8
11.位置方法 ------ indexOf() 、 lastIndexOf()
indexOf(param1,param2) : param1:要查找的项(数组内是否包含次元素) ,param2(可选的)查找的起点位置的索引
var array = [1,2,3,4,5,6,7,8,9];
alert(array.indexOf(5)); //4
alert(array.indexOf(5,5)); //-1 查不到返回-1
12.数组迭代方法: ------ every() 、filter() 、forEach() 、map() 、some() IE9+,Firefox2+,Safari3+,Opera9.5+,Chorme
every() : 对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true;
判断数组A中的所有元素都在数组B内:
var A = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var B = [1, 2, 5, 6, 6, 8];
var boo = B.every(function(item, index, array){
if (A.indexOf(item)!= -1) {
return true;
}
});
alert(boo); //true
var C = [1, 2, 5, 6, 6, 8];
var booc = C.every(function(item, index, array){
if (A.indexOf(item)!= -1) {
return true;
}
});
alert(booc); //false
filter() : 对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。
forEach() : 对数组中的每一项运行给定函数,无返回值。
取出数组B中的元素在数组A中出现(未出现)过的元素:
var A = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var B = [1, 2, 5, 6,0, 8];
var arr = new Array();
B.forEach(function(item, index, array){
if (A.indexOf(item)!= -1) {
arr[arr.length] = item;
}
});
alert(arr); //1,2,5,6,8
map() : 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
some(): 对数组中的每一项运行给定函数,如果该函数对任一项都返回true,则返回true;
13.缩小方法: ------- reduce() 、reduceRight() IE9+,Firefox3+,safari 4+,Opera 10.5,chrome
迭代数组的每一项,然后构建一个最终的返回值。函数接收4个参数:前一个值、当前值、项的索引、数组对象
这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项。
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var sum = array.reduce(function(pre,cur,index,array) {
return pre + cur;
})
alert(sum); //45
reduceRight()只是反向遍历,结果不变
14.取得调用方法时的日期和时间的毫秒数 ------ Date.now();
15.日期格式化方法:
toDateString() : 以特定于实现的格式显示星期几、月、日和年。
toTimeString() : 以特定于实现的格式显示时、分、秒和时区。
toLocaleDateString() : 以特定于地区的格式显示星期几、月、日和年。
toLocaleTimeString() : 以特定于地区的格式显示时、分、秒。
toUTCString() : 以特定于实现的格式显示完整的UTC日期。
16.日期/时间组件的方法:
getTime() ------ 返回表示日期的毫秒数;与valueOf()方法返回的值相同
17.作为值的函数:比较对象的某一个参数,可根据参数(对象属性)进行排序。
function createComparisonFunction(propertyName) {
return function(object1,object2) {
var value1 = object1[propertyName];
var value2 = obejct2[propertyName];
if (value1 < value2) {
return -1;
} else if (value1 >value2) {
return 1;
} else {
return 0;
}
}
}
var data = [{name : "zhang" , age : 20 } , {name : "li" ,age : 25 }];
data.sort(createComparisonFunction(name));
alert(data[0].name); // "li"
data.sort(createComparisonFunction(age));
alert(data[0].name); //"zhang"
18.函数的内部属性: ------ arguments.callee()
阶乘计算:
function factorial(max){
if (max <= 1) {
return 1;
} else {
return max * arguments.callee(max - 1);
}
}
alert(factorial(5)); //120
一定数值范围内的阶乘计算:
function betweenFactorial (max,min) {
return factorial(max)/factorial(min-1);
}
alert(betweenFactorial(5,4)); //20
19.函数的内置属性和方法 : ------- apply()
选出数组中最大/最小的值
var data = [1,2,3,4,65,6,5,8];
var maxValue = Math.max.apply(Math,data);
alert(maxValue); //56
var minValue = Math.min.apply(Math,data);
alert(minValue); //1
- 1楼cxwithyxy2012-12-12 17:19
- 啊,原来还有一些我不知道的……