閱讀862 返回首頁    go 技術社區[雲棲]


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

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




最後更新:2017-04-02 00:06:56

  上一篇:go XSLT的Replace函數
  下一篇:go Android開發15——給TextView加上滾動條