JavaScript中开发常用方法-总结-持续更新
Posted JackieDYH
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript中开发常用方法-总结-持续更新相关的知识,希望对你有一定的参考价值。
数组的常用方法
length
length 是一个可读可写的属性,用来表示数组的长度(即数组元素个数)。通过访问 length 属性,可以获取数组长度;而通过修改 length 的值,可以增加或减少数组元素,甚至可以完全清空数组元素。
length 属性的读、写操作示例如下:
var arr = [1,2,3];
alert(arr.length);//读取数组长度,结果为3
arr.length = 1;//修改数组长度为1,此时数组只剩第一个元素
arr.length = 0;//快速清空数组,此时数组中没有任何元素
注:快速清空除了可以通过修改 length 属性值为 0 外,还有一种方法就是使用代码:arr=[]。如果 arr 原来的元素有很多,则使用 arr=[] 清空数组的方法效率比修改 length 属性值为 0 的方法更高。
push(元素1,…,元素n)
push() 方法可把参数指定的元素依次添加到数组的末尾,并返回添加元素后的数组长度(该方法必须至少有一个参数)
var arr = [1,2,3];
alert(arr.push(4));//返回最终数组的长度:4
alert(arr);//返回:1,2,3,4
alert(arr.push(5,6,7));//返回最终数组的长度:7
alert(arr);//返回:1,2,3,4,5,6,7
unshift(元素1,…,元素n)
unshift() 方法可把参数指定的元素依次添加到数组的前面,并返回添加元素后的数组长度。该方法必须至少有一个参数。注意:IE6、IE7 不支持方法的返回值
var arr = [1,2,3];
alert(arr.unshift('a'));//返回最终数组的长度:4
alert(arr);//返回:a,1,2,3
alert(arr.unshift('b','c','d'));//返回最终数组的长度:7
alert(arr);//返回:b,c,d,a,1,2,3
pop()
pop() 方法可弹出(删除)数组最后一个元素,并返回弹出的元素
var arr = ['A','B','C','D'];
alert(arr.pop());//返回:D
alert(arr);//返回:A,B,C
shift()
shift() 方法可删除数组第一个元素,并返回删除的元素
var arr = ['A','B','C','D'];
alert(arr.shift());//返回:A
alert(arr);//返回:B,C,D
splice(index,count[,元素1,…,元素n])
splic() 方法功能比较强,它可以实现删除指定数量的元素、替换指定元素以及在指定位置添加元素。这些不同功能的实现需要结合方法参数来确定:
- 当参数只有 index 和 count 两个参数时,如果 count 不等于 0,splice() 方法实现删除功能,同时返回所删除的元素:从 index参数指定位置开始删除 count 参数指定个数的元素;
- 当参数为 3 个以上,且 count 参数不为0时,splice() 方法实现替换功能,同时返回所替换的元素:用第三个及其之后的参数替换 index 参数指定位置开始的 count 参数指定个数的元素;
- 当参数为 3 个以上,且 count 参数为 0 时,splice() 方法的实现添加功能:用第三个及其之后的参数添加到 index 参数指定位置上。
从指定位置删除指定个数的元素
var arr = ['A','B','C','D'];
//2个参数,第二个参数不为 0,实现删除功能
alert(arr.splice(0,2));
alert(arr); //返回C,D
用指定元素替换从指定位置开始的指定个数的元素
var arr = ['A','B','C','D'];
//3个参数,第二个参数不为 0,实现替换功能:用 a 替换掉 A,返回:A
alert(arr.splice(0,1,'a'));
alert(arr); //返回:a,B,C,D
alert(arr.splice(0,2,'a or b'));//用a or b替换掉a和B,返回a,B
alert(arr); //返回:a or b,C,D
在指定位置添加指定的元素
var arr = ['A','B','C','D'];
//4个参数,第二个参数为 0,实现添加功能:在下标为 1 处添加 aaa,bbb,没有返回值
alert(arr.splice(1,0,'aaa','bbb'));
alert(arr);//返回:A,aaa,bbb,B,C,D
实现数组去重
var arr = [1,2,2,2,4,2];
for(var i = 0; i < arr.length; i++){
for(var j = i + 1; j < arr.length; j++){
if(arr[i] == arr[j]){
arr.splice(j,1);//删除 j 位置处的元素
j--;
}
}
}
alert(arr);//返回1,2,4三个元素
上述代码使用了具有两个参数的 splice(),实现了删除指定元素的功能
slice(index1[,index2])
slice() 方法返回包含从数组对象中的第 index1~index2-1 之间的元素的数组。index2 参数可以省略,省略时表示返回从 index1 位置开始一直到最后位置的元素。需要注意的是,该方法只是读取指定的元素,并不会对原数组作任何修改
var arr = ['A','B','C','D'];
alert(arr.slice(0,3)); //返回:A,B,C
alert(arr); //返回A,B,C,D
alert(arr.slice(0)); //返回数组全部元素:A,B,C,D
alert(arr); //返回A,B,C,D
sort()、sort(compareFunction)
sort() 方法用于按某种规则排序数组:当方法的参数为空时,按字典序(即元素的 Unicode 编码从小到大排序顺序)排序数组元素;当参数为一个匿名函数时,将按匿名函数指定的规则排序数组元素。sort() 排序后将返回排序后的数组
按字典序排序数组
var arr = ['c','d','a','e'];
alert(arr.sort()); //返回排序后的数组:a,c,d,e
alert(arr); //返回排序后的数组:a,c,d,e
从上述代码,我们可看到没有参数时,sort() 按字典序排列数组中的各个元素
再用元素的 sort() 对几个数字排序
var arr = [4,3,5,76,2,0,8];
arr.sort();
alert(arr); //返回排序后的数组:0,2,3,4,5,76,8
排序后,结果并不是所预期的 76 最大应排在最后,反而是 8 排在最后,似乎 8 在这些元素中是最大的,即元素并没按数字大小进行排序
是因为 sort() 默认是对每个元素按字符串进行排序,排序时会从左到右按位比较元素的每位字符,对应位的 Unicode 编码大的就意味着这个元素大,此时将不再对后面的字符进行比较;对应位字符相同时才比较后面位置的字符。显然上述数组的排序使用了 sort() 的默认排序规则。此时要让数组中的元素按数字大小进行排序,就必须通过匿名函数参数来修改排序规则。
按匿名函数参数指定的规则排序数组
下面通过定义匿名函数来修改 sort() 的默认排序规则,实现对上面数字元素按数字大小进行排序
var arr = [4,3,5,76,2,0,8];
arr2.sort(function(a,b){
return a-b;//从小到大排序
//return b-a;//从大到小排序
});
alert(arr);//返回排序后的数组:0,2,3,4,5,8,76
说明:匿名函数中返回第一个参数减第二个参数的值,此时将按元素数值从小到大的规则排序各个元素:当两个参数的差为正数时,前后比较的两个元素将调换位置排序;否则元素不调换位置。如果返回第二个参数减第一个参数的值,则按元素数值从大到小的规则排序各个元素,元素调换规则和从小到大类似。
当数组元素的前缀为数字而后缀为字符串时,如果希望这些元素能按数字大小进行排序,此时需对匿名函数中的参数作一些变通处理。因为这些参数代表了数组元素,所以它们也是一个包含数字和字符的字符串,因此要按数字大小来排序它们,就需要将参数解析为一个数字,然后再返回这些解析结果的差。
var arrWidth = ['345px','23px','10px','1000px'];
arrWidth.sort(function(a,b){
return parseInt(a)-parseInt(b);
});
alert(arrWidth);//排序后的结果为:10px,23px,345px,1000px
通过匿名函数,还可以实现随机排序数组元素
var arr = [1,2,3,4,5,6,7,8];
arr.sort(function(a,b){
return Math.random()-0.5;//random()返回:0~1之间的一个值
});
alert(arr);//排序后的结果为:4,3,1,2,6,5,7,8。注意:每次执行的结果可能会不一样
上述代码中的匿名函数并没有返回两个参数的差值,而是返回 Math 对象中的 random() 随机函数和 0.5 的差值,这就使得元素的排序将不是根据元素大小来排序。由于 random() 的值为 0~1 之间的一个随机值,所以它和 0.5 的差时正时负,这就导致数组元素位置的调换很随机,所以排序后的数组是随机排序的
concat(数组1,…,数组n)
concat() 将参数指定的数组和当前数组连成一个新数组
var arr1 = [1,2,3];
var arr2 = [4,5,6];
var arr3 = [7,8,9];
alert(arr1.concat(arr2,arr3));//最终获得连接后的数组:1,2,3,4,5,6,7,8,9
reverse()
reverse() 方法可返回当前数组倒序排序形式
var arr = [1,2,3,4,5,6];
alert(arr.reverse());//返回:6,5,4,3,2,1
join(分隔符)
join() 方法可将数组内各个元素按参数指定的分隔符连接成一个字符串。参数可以省略,省略参数时,分隔符默认为“逗号”
forEach()
forEach() 方法用于对数组的每个元素执行一次回调函数
array对象.forEach(function(currentValue[,index[,array]])[,thisArg])
forEach() 方法的第一个参数为 array 对象中每个元素需要调用的函数。
forEach() 方法中的各个参数说明如下:
- currentValue 参数:必需参数,表示正在处理的数组元素(当前元素);
- index 参数:可选参数,表示正在处理的当前元素的索引;
- array 参数:可选参数,表示方法正在操作的数组;
- thisArg 参数,可选参数,取值通常为 this,为空时取值为 undefined。
返回值为 undefined
var fruit = ["苹果","橙子","梨子"];
fruit.forEach(function(item,index){
console.log("fruit[" + index + "] = " + item);
});
显示:fruit[0]=苹果、fruit[1]=橙子和fruit[2]=梨子
filter()
filter() 方法用于创建一个新的数组,其中的元素是指定数组中所有符合指定函数要求的元素
array对象.filter(function(currentValue[,index[,array]])[,thisArg])
filter() 方法的第一个参数为回调函数,array 对象中每个元素都需要调用该函数,filter() 会返回所有使回调函数返回值为 true 的元素。
filter() 方法中的各个参数说明如下:
- currentValue 参数:必需参数,表示正在处理的数组元素(当前元素);
- index 参数:可选参数,表示正在处理的当前元素的索引;
- array 参数:可选参数,表示方法正在操作的数组;
- thisArg 参数,可选参数,取值通常为 this,为空时取值为 undefined。
filter() 函数返回一个新数组,其中包含了指定数组中的所有符合条件的元素。如果没有符合条件的元素则返回空数组。
var names1 = ["张山","张小天","李四","张萌萌","王宁","陈浩"];//原数组
function checkName(name){ //定义回调函数,判断名字是否姓“张”
if(name.indexOf("张") != -1){
return true;
}else{
return false;
}
}
var names2 = names1.filter(checkName);//对names1执行回调用函数,返回所有姓张的名字
names2.forEach(function(item,index){//遍历names2数组中的每个元素
console.log("names2[" + index + "] = " + item);
});
显示:names2[0]=张山、names2[1]=张小天和names2[2]=张萌萌
map()
map() 方法用于创建一个新的数组,其中的每个元素是指定数组的对应元素调用指定函数处理后的值
array对象.map(function(currentValue[,index[,array]])[,thisArg])
map() 方法的第一个参数为回调函数,array 对象中每个元素都需要调用该函数。
map() 方法中的各个参数说明如下:
- currentValue 参数:必需参数,表示正在处理的数组元素(当前元素);
- index 参数:可选参数,表示正在处理的当前元素的索引;
- array 参数:可选参数,表示方法正在操作的数组;
- thisArg 参数,可选参数,取值通常为 this,为空时取值为 undefined。
map() 函数返回一个新数组,其中的元素为原始数组元素调用回调函数处理后的值
var number = [1,2,3];//原数组
var num=number.map(function(item){//对原数组中的每个元素*2,将值分别存储在num数组中
return item * 2;
});
num.forEach(function(item,index){//遍历num中的每个元素
console.log("num[" + index + "]=" + item);
});
显示:num[0]=2、num[1]=4和num[2]=6
reduce()
reduce() 用于使用回调函数对数组中的每个元素进行处理,并将处理进行汇总返回
array对象.reduce(function(result,currentValue[,index[,array]])[,initialValue])
reduce() 方法的第一个参数为回调函数。
reduce() 方法中的各个参数说明如下。
- result 参数:必需参数,表示初始值或回调函数执行后的返回值。在第一次调用回调函数前,result 参数表示初始值;在调用回调函数之后,result 参数表示回调函数执行后的返回值。
需要注意的是,如果指定了 initialValue 参数,则初始值就是 initialValue 参数值,否则初始值为数组的第一个元素。
- currentValue 参数:必需参数,表示正在处理的数组元素(当前元素)。
需要注意的是,如果指定了 initialValue 参数,则第一次执行回调函数时的 currentValue 为数组的第一个元素,否则为第二个元素。
- index 参数:可选参数,表示正在处理的当前元素的索引。
- array 参数:可选参数,表示方法正在操作的数组。
- initialValue 参数,可选参数,作为第一次调用回调函数时的第一个参数的值。如果没有提供该参数,第一次调用回调函数时的第一个参数将使用数组中的第一个元素。
需要注意的是:对一个空数组调用 reduce() 方法时,如果没有指定 initialValue 参数此时将会报错。
var num1 = [1,3,6,9];
//reduce()没有initialValue参数
var num2 = num1.reduce(function(v1,v2){ //①
return v1 + 2 * v2;//将当前元素值*2后和初始值或函数的前一次执行结果进行相加
});
console.log("num2=" + num2);//输出:num2=37
//reduce()提供了initialValue参数
var num3 = num1.reduce(function(v1,v2){ //②
return v1 + 2 * v2;//将当前元素值*2后和初始值或函数的前一次执行结果进行相加
},2);
console.log("num3=" + num3); //输出:num3=40
上述示例中,① 处调用的 reduce() 没有指定 initialValue 参数,因而初始值为数组的第一个元素,即 1,此时 reduce() 的执行过程等效于:1+2*3+2*6+2*9 运算表达式的执行,结果返回 37。② 处调用的 reduce() 指定了值为 2 的 initialValue 参数,因而初始值为 2,此时 reduce() 的执行过程等效于:2+2*1+2*3+2*6+2*9 运算表达式的执行,结果返回 40。
find()
find() 用于获取使回调函数值为 true 的第一个数组元素。如果没有符合条件的元素,将返回 undefined
array对象.find(function(currentValue[,index[,array]])[,thisArg])
filter() 方法的第一个参数为回调函数,array 对象中每个元素都需要调用该函数,filter() 会返回所有使回调函数返回值为 true 的元素。
filter() 方法中的各个参数说明如下:
- currentValue 参数:必需参数,表示正在处理的数组元素(当前元素);
- index 参数:可选参数,表示正在处理的当前元素的索引;
- array 参数:可选参数,表示方法正在操作的数组;
- thisArg 参数,可选参数,取值通常为 this,为空时取值为 undefined
var names = ["Tom","Jane","Marry","John","Marissa"];
//定义回调函数
function checkLength(item){
return item.length >= 4;
}
var name = names.find(checkLength);//返回名字数组中名字长度大于或等于4的第一个名字
console.log("name: " + name);
// name:Jane
字符串常用方法
方法 | 描述 |
---|---|
charAt(位置) | 返回字符串指定位置处的字符 |
charCodeAt(位置) | 返回字符串指定位置处字符的 Unicode 编码值 |
indexOf(查找的字符串 [,StartIndex]) | 返回首次出现查找的字符串的位置 |
lastlndexOf(查找的字符串 [,StartIndex] ) | 返回要查找的字符串在 String 对象中最后一次出现的位置 |
match(正则表达式) | 在一个字符串中寻找与正则表达式匹配的字符串 |
replace(正则表达式, 新字符串) | 使用新字符串替换匹配正则表达式的字符串后作为新字符串返回 |
search(正则表达式) | 搜索与参数指定的正则表达式的匹配 |
split(分隔符 [,len]) | 根据参数指定的分隔符将字符串分隔为字符串数组 |
slice(索引值 i [, 索引值 j]) | 提取并返回字符串索引值 i 到索引值 j-1 之间的字符串 |
substring(索引值 i [, 索引值 j]) | 提取并返回字符串索引值 i 到索引值 j-1 之间的字符串 |
toLowerCase() | 将字符串中的字母全部转换为小写后作为新字符串返回 |
toUpperCase() | 将字符串中的字母全部转换为大写后作为新字符串返回 |
toString() | 返回字符串对象的原始字符串值。这是针对字符串对象的方法 |
valueOf() | 返回字符串对象的原始字符串值。这是针对字符串对象的方法 |
数组与字符串相互转换方法
数组方法 | 说明 |
---|---|
toString() | 将数组转换成一个字符串 |
toLocalString() | 把数组转换成本地约定的字符串 |
join() | 将数组元素连接起来以构建一个字符串 |
toString() 方法读取数组的值
数组中 toString() 方法能够把每个元素转换为字符串,然后以逗号连接输出显示
var a = [1,2,3,4,5,6,7,8,9,0]; //定义数组
var s = a.toString(); //把数组转换为字符串
console.log(s); //返回字符串“1,2,3,4,5,6,7,8,9,0”
console.log(typeof s); //返回字符串string,说明是字符串类型
当数组用于字符串环境中时,JavaScript 会自动调用 toString() 方法将数组转换成字符串。在某些情况下,需要明确调用这个方法。
var a = [1,2,3,4,5,6,7,8,9,0]; //定义数组
var b = [1,2,3,4,5,6,7,8,9,0]; //定义数组
var s = a + b; //数组连接操作
console.log(s); //返回“1,2,3,4,5,6,7,8,9,01,2,3,4,5,6,7,8,9,0”
console.log(typeof s); //返回字符串string,说明是字符串类型
toString() 在把数组转换成字符串时,首先要将数组的每个元素都转换为字符串。当每个元素都被转换为字符串时,才使用逗号进行分隔,以列表的形式输出这些字符串
var a = [1,[2,3],[4,5]],[6,[7,[8,9],0]]]; //定义多维数组
var s = a.toString(); //把数组转换为字符串
console.log(S); //返回字符串“1,2,3,4,5,6,7,8,9,0”
其中数组 a 是一个多维数组,javascript 会以迭代的方式调用 toString() 方法把所有数组都转换为字符串。
toLocalString() 方法读取数组的值
toLocalString() 方法与 toString() 方法用法基本相同,主要区别在于 toLocalString() 方法能够使用用户所在地区特定的分隔符把生成的字符串连接起来,形成一个字符串
var a = [1,2,3,4,5]; //定义数组
var s = a.toLocalString(); //把数组转换为本地字符串
console.log(s); //返回字符串“1,2,3,4,5,6,7,8,9,0”
在上面示例中,toLocalString() 方法根据中国的使用习惯,先把数字转换为浮点数之后再执行字符串转换操作
join() 方法可以把数组转换为字符串
join() 方法可以把数组转换为字符串,不过它可以指定分隔符。在调用 join() 方法时,可以传递一个参数作为分隔符来连接每个元素。如果省略参数,默认使用逗号作为分隔符,这时与 toString() 方法转换操作效果相同
var a = [1,2,3,4,5]; //定义数组
var s = a.join("=="); //指定分隔符
console.log(s); //返回字符串“1==2==3==4==5”
split() 方法把字符串转换为数组
split() 方法是 String 对象方法,与 join() 方法操作正好相反。该方法可以指定两个参数,第 1 个参数为分隔符,指定从哪儿进行分隔的标记;第 2 个参数指定要返回数组的长度
var s = "1==2== 3==4 ==5";
var a = s.split("==");
console.log(a);
console.log(a.constructor == Array);
JS字符串大小写转换及比较
toLowerCase()和toUpperCase()
var oStr = "Hello,欢迎学习JavaScript";
alert(oStr.toLowerCase()));//输出:hello,欢迎学习javascript
alert(oStr.toUpperCase());//输出:HELLO,欢迎学习JAVASCRIPT
valueOf()和toString()
var oStr = new String("Hello,JavaScript!");
console.log(oStr.toString());//输出:Hello,JavaScript!
console.log(oStr.valueOf());//输出:Hello,JavaScript!
字符串的比较
两个字符串之间的比较是逐位比较字符的 Unicode 值的大小。字符串的比较可使用>、<、>=、<=、==5 个比较运算符。当使用>或<运算符时,一旦某位置上的字符的 Unicode 值不相等时,将返回 true 或 false,否则继续比较,一直到一个字符串的所有字符都比较完时,对应位的字符的 Unicode 都相等,此时如果两个字符串的长度相等,则表示这两个字符串相等;此时如果两个字符串的长度不相等,则长度较长的那个字符串大于长度较短的字符串。
需要注意的是,如果两个字符串对象进行比较,则在比较前会默认调用 toString() 方法获取它们的原始字符串值,然后再用字符串值进行比较。此外,如果比较的两个数据有一个是字符串,另一个是数值型数据,则默认会将字符串隐式转变为数值,然后按数值大小进行比较。
var str1 = "JavaScript";
var str2 = "javaScript";
var str3 = "JavaScript";
var str4 = "Java";
var oStr1 = new String("JavaScript");
var oStr2 = new String("VBScript");
alert(str1 < str2)//比较两个字符串变量,j的Unicode比J的大,输出:true
alert(str1 == str3)//输出:true
alert(str3 > str4);//输出:true
alert(oStr1> oStr2);//比较两个字符串对象,等效于oStr1.toString()==oStr2.toString(),输出:false
alert('100' > '2');//两个比较数都是字符串,将按对应位的Unicode进行比较,输出:false
alert('100' > 2);//比较数存在数值数据,首先将字符串隐式转换为数值再比较,输出:true
Math对象的常用方法
方法 | 描述 |
---|---|
sin(x) | 返回 x 的正弦值,参数 x 以弧度表示 |
cos(x) | 返回 x 的余弦值,参数 x 以弧度表示 |
tan(x) | 返回 x 的正切值,参数 x 以弧度表示 |
acos(x) | 返回 x 的反余弦值,参数 x 必须是 -1.0~1.0 之间的数 |
asin(x) | 返回 x 的反正弦值,参数 x 必须是 -1.0~1.0 之间的数 |
atan(x) | 返回 x 的反正切值,参数 x 必须是 1 个数值 |
abs(x) | 返回 x 的绝对值,参数 x 必须是 1 个数值 |
ceil(x) | 返回大于等于 x 的最小整数,参数 x 必须是一个数值 |
exp(x) | 返回 e 的 x 次幕的值,参数 x 为任意数值或表达式 |
floor(x) | 返回小于等于 x 的最大整数,参数 x 必须是一个数值 |
log(x) | 返回 x 的自然对数,参数 x 为任意数值或表达式 |
max(x1,x2) | 返回 x1、x2 中的最大值,参数 x1、x2 必须是数值 |
min(x1,x2) | 返回 x1、x2 中的最小值,参数 x1、x2 必须是数值 |
pow(x1,x2) | 返回 x1 的 x2 次方,参数 x1、x2 必须是数值 |
random() | 产生一个 0~1.0 (包含 0 但不包含 1.0)之间的随机浮点数 |
round(x) | 返回 num 四舍五入后的整数,参数 x 必须是一个数值 |
sqrt(x) | 返回 x 的平方根,参数 x 必须是大于等于 0 的数 |
random()函数
获取 0~1.0 之间的随机数
Math.random();
随机获取 0 和 1
Math.round(Math.random());
使用 round() 对 random() 函数所返回的 0~1.0 之间的数进行四舍五入后,最终结果或者是 0 或者是 1。
随机获取 0~10 之间的一个整数
Math.round(Math.random()*10);
首先使用 Math.random()*10 可得到 0~10.0 之间的一个随机数,然后再使用 Math.round() 对 0~10.0 之间的随机数进行四舍五入,最终就可得到 0~10 之间的一个随机整数。
随机获取 5~10 之间的一个整数
Math.round(Math.random()*5+5);
首先使用 Math.random()*5+5 可得到 5.0~10.0 之间的一个随机数,然后再使用 Math.round() 对 5.0~10.0 之间的随机数进行四舍五入,最终就可得到 5~10 之间的一个随机整数。
随机获取 10~20 之间的一个整数
Math.round(Math.random()*10+10);
首先使用 Math.random()*10+10 可得到 10.0~20.0 之间的一个随机数,然后再使用 Math.round() 对 10.0~20.0 之间的随机数进行四舍五入,最终就可得到 10~20 之间的一个随机整数。
随机获取 20~100 之间的一个整数
Math.round(Math.random()*80+20));
首先使用 Math.random()*80+20 可得到 20.0~100.0 之间的一个随机数,然后再使用 Math.round() 对 20.0~100.0 之间的随机数进行四舍五入,最终就可得到 20~100 之间的一个随机整数。
随机获取 x~y 之间的一个整数,其中 x 和 y 都是整数
通过分析前面获取不同范围之间的随机数的代码发现,random() 乘以某个数 v1 再加上另一个数 v2 后再进行四舍五入,可获得 v2~v1+v2 之间的随机整数,由此可总结获取任意两个数 x~y 之间的随机整数的一般公式如下:
Math.round(Math.random()*(y-x)+x)
例如假设 x=26,y=37,求两个数之间的随机整数的代码如下:
var x = 26,y = 37;
alert(Math.round(Math.random()*(y-x)+x));
运行上述代码后可发现结果正是 26~37 之间的一个随机整数
随机获取 0~x 之间的一个整数,其中 x 是一个整数
Math.round(Math.random()*x)
首先使用 Math.random()*x 可得到 0~x 之间的一个随机数,然后再使用 Math.round() 对 0~x 之间的随机数进行四舍五入,最终就可得到 0~x 之间的一个随机整数。
1~x 之间的一个整数,其中 x 是一个整数
Math.ceil(Math.random()*x)
首先使用 Math.random()*x 可得到 0~x 之间的一个随机数,然后再使用 Math.ceil() 向上取整得到 1~x 之间的随机数进行四舍五入,最终就可得到 1~x 之间的一个随机整数。
Date对象的常用方法
方法 | 描述 |
---|---|
getDate() | 根据本地时间返回 Date 对象的当月号数,取值 1~31 |
getDay() | 根据本地时间返回 Date 对象的星期数,取值 0~6,其中星期日的取值是 0,星期一的取值是 1,其他依此类推 |
getMonth() | 根据本地时间返回 Date 对象的月份数,取值 0~11,其中一月的取值是 0,其他依此类推 |
getFullYear() | 根据本地时间,返回以 4 位整数表示的 Date 对象年份数 |
getHours() | 根据本地时间返回 Date 对象的小时数,取值 0~23,其中 0 表示晩上零点,23 表示晚上 11 点 |
getMinutes() | 根据本地时间返回 Date 对象的分钟数,取值 0~59 |
getSeconds() | 根据本地时间返回 Date 对象的秒数,取值 0~59 |
getTime() | 根据本地时间返回自 1970 年 1 月 1 日 00:00:00 以来的毫秒数 |
toLocaleString() | 将 Date 对象转换为字符串,并根据本地时区格式返回字符串 |
toString() | 将 Date 对象转换为字符串,并以本地时间格式返回字符串。注意:直接输出 Date 对象时 JavaScript 会自动调用该方法将 Date 对象转换为字符串 |
toUTCString() | 将 Date 对象转换为字符串,并以世界时格式返回字符串 |
Date对象的创建
创建 Date 对象的格式
var 对象名称 = new Date([日期参数]);
1) 省略不写。用于获取系统当前时间,这是最常使用的情况。所谓系统当前时间,指的是运行获取 Date 对象时的操作系统上的时间。
示例如下:
var now = new Date();
2) 字符串形式。参数以字符串形式来表示,参数格式为:“月日,公元年时:分:秒”或其日期形式“月日,公元年”,或“月/日/公元年时:分:秒”或其日期形式“月/日/公元年”。需要注意的是,月份的取值是 1~12,或者是表示 1~12 月的英文单词:January、February、March、April、May、June、July、Augu st、September、October、November、December。
示例如下:
var date = new Date("10/27/2000 12:06:36");//月份为10月
var date = new Date("October 27,2000 12:06:36");
3) 数字形式。参数以数字来表示日期中的各个组成部分,参数格式为:“公元年,月,日,时,分,秒”或“公元年,月,日”。需要注意的是,月份的取值是 0~11,即 0 表示 1 月份,11 表示 12 月份。
例如:
var date = new Date(2012,10,10,0,0,0);//月份为11月
var date = new Date(2012,10,10);
使用表中的方法时
Date对象.方法(参数1,参数2,…)
例如:
var time = new Date();
var year = time.getFullYear();//Date对象time调用getFullYear()方法获取当前系统时间的年份
使用 Date 对象获取系统时间
var now = new Date(); //对系统当前时间创建Date对象
var year = now.getFullYear(); //获取以四位数表示的年份
var month = now.getMonth()+1; //获取月份
var date = now.getDate();//获取日期
var day = now.getDay(); //获取星期数
var hour = now.getHours();//获取小时数
var minute = now.getMinutes();//获取分钟数
var second = now.getSeconds();//获取秒数
//创建星期数组
var week = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
hour = (hour<10) ? "0"+hour:hour;//以两位数表示小时
minute = (minute<10) ? "0"+minute:minute;//以两位数表示分钟
second = (second<10) ? "0"+second:second;//以两位数表示秒数
console.log("现在时间是:"+year+"年"+month+"月"+date+"日 "+week[day]+" "+
hour+":"+minute+ ":"+second);
console.log("当前时间调用toLocaleString()的结果: "+now.toLocaleString());
console.log("当前时间调用toString()的结果:"+now.toString());
console.log("当前时间调用toUTCString()的结果: "+now.toUTCString());
/*function toTwo(num){//以两位数来表示num
return (num<10)?'0'+num:''+num;
}*/
以上是关于JavaScript中开发常用方法-总结-持续更新的主要内容,如果未能解决你的问题,请参考以下文章