javaScript学习小记(二)------常用函数

本文介绍了JavaScript中的关键技巧,包括数据类型检查、数值操作、数组方法及日期处理等,帮助开发者掌握高效编程方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()方法返回的值相同

setTime(毫秒) ------ 以毫秒数设置日期,会改变整个日期

getFullYear() ------ 取得4位数的年份(如2007)

getUTCFullYear ------ 返回UTC日期的4位数年份

setFullYear(年) ------- 设置日期的年份,传入的值必须是4位数字(如2007 而不是 07 )

setUTCFullYear(年) ------ 设置UTC日期的年份,传入的值必须是4位数字(如2007 而不是 07 )

getMonth() ------ 返回日期中的月份,0表示1月,11表示十二月

getUTCMonth() ------ 返回UTC日期中的月份,0表示1月,11表示十二月

setMonth(月) ------- 设置日期的月份,传入的月份值必须大于0,超过11则增加年份

setUTCMonth(月) ------ 设置UTC日期的月份,传入的月份值必须大于0,超过11则增加年份

getDate() ------ 返回日期月份中的天数(1 --- 31)

getUTCDate() ------ 返回UTC日期月份中的天数(1 --- 31)

setDate(日) ------- 设置日期中月份的天数。如果传入的值超过了该月中的天数,则增加月份

setUTCDate(日) ------- 设置UTC日期中月份的天数。如果传入的值超过了该月中的天数,则增加月份

getDay() -------- 返回日期中星期的星期几

getUTCDay() -------- 返回UTC日期中星期的星期几

getHours() -------- 返回日期中小时数( 0 --- 23)

getUTCHours() ------ 返回UTC日期中的小时数( 0 ----23)

setHours() ------ 设置日期中的小时数

setUTCHours() ------- 设置UTC日期中的小时数

getMinutes() -------- 返回日期中的分钟数(0 - 59)

getUTCMinutes() -------- 返回日期中的分钟数(0 - 59)



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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值