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

简介: 1.测试变量的数据类型 ----   typeof "undefined"            -----             如果这个值未定义 2.测试数字是否位于最大数和最小数之间     -----     isFinite() var result = Number.MAX_VALUE + Number.MIN_VALUE; alert( isFinite(resul

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




目录
相关文章
|
21天前
|
JavaScript
变量和函数提升(js的问题)
变量和函数提升(js的问题)
|
21天前
|
JavaScript
常见函数的4种类型(js的问题)
常见函数的4种类型(js的问题)
11 0
|
22天前
|
JavaScript
写一个函数将N组<>(包含开始和结束),进行组合,并输出组合结果 (js)
写一个函数将N组<>(包含开始和结束),进行组合,并输出组合结果 (js)
9 0
|
1月前
|
自然语言处理 JavaScript 网络架构
js开发:请解释什么是ES6的箭头函数,以及它与传统函数的区别。
ES6的箭头函数以`=&gt;`定义,简化了函数写法,具有简洁语法和词法作用域的`this`。它无`arguments`对象,不能用作构造函数,不支持`Generator`,且不改变`this`、`super`、`new.target`绑定。适用于简短表达式,常用于异步编程和高阶函数。
18 5
|
1月前
|
JavaScript 前端开发 网络架构
JavaScript 谈谈对箭头函数的理解及其与普通函数的区别。
JavaScript 谈谈对箭头函数的理解及其与普通函数的区别。
17 1
|
1月前
|
前端开发 JavaScript 数据处理
在JavaScript中,什么是异步函数执行的例子
在JavaScript中,什么是异步函数执行的例子
10 0
|
1月前
|
JavaScript
JS封装节流函数
JS封装节流函数
15 0
|
1月前
|
JavaScript 前端开发
javascript箭头函数
javascript箭头函数
|
1月前
|
JavaScript 前端开发
JavaScript函数科里化
JavaScript函数科里化
|
1天前
|
JavaScript 前端开发
js开发:请解释什么是ES6的Generator函数,以及它的用途。
ES6的Generator函数是暂停/恢复功能的特殊函数,利用yield返回多个值,适用于异步编程和流处理,解决了回调地狱问题。例如,一个简单的Generator函数可以这样表示: ```javascript function* generator() { yield &#39;Hello&#39;; yield &#39;World&#39;; } ``` 创建实例后,通过`.next()`逐次输出&quot;Hello&quot;和&quot;World&quot;,展示其暂停和恢复的特性。
9 0