当前位置: 代码迷 >> JavaScript >> javaScript学习初记(二)-常用函数
  详细解决方案

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

热度:273   发布时间:2012-12-28 10:29:05.0
javaScript学习小记(二)------常用函数

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
啊,原来还有一些我不知道的……
  相关解决方案