首頁 > web前端 > js教程 > 主體

JavaScript數組常用方法_javascript技巧

WBOY
發布: 2016-05-16 16:11:39
原創
1232 人瀏覽過

判斷某個物件是否為陣列: instanceof、Array.isArray()

對於一個網頁或一個全域作用域可以使用instanceof運算子。

if(value instanceof Array){  //判斷value是否為陣列
   
}
instanceof運算子它假設只有一個全域執行環境,如果網頁包含多個框架則使用ECMAScript5新增的Array.isArray()方法。

if(Array.isArray(value)){//判斷value是否為陣列

}
Array.isArray()方法支援的瀏覽器有IE9 、Firefor 4 、Safari5 、Opera 10.5 、Chrome。

如果要在未實作這個方法中的瀏覽器中檢查數組,則使用:

if(Object.prototype.toString.call(value)=="[object Array]"){
}

將陣列轉換為字串: toLocaleString()、toString()、valueOf()、join()

複製程式碼 程式碼如下:

var test=['a','b','c'];
alert(test.toString());//a,b,c
alert(test.toLocaleString());//a,b,c
alert(test.valueOf());//a,b,c
alert(test);//a,b,c 預設呼叫toString()方法
alert(test.join(','));//a,b,c
alert(test.join('|'));//a|b|c

新增與移除陣列元素方法:push()、pop()、unshift()、shift()

push()方法可以接受任意數量的參數,把他們逐個加到數組末尾,並且返回數組修改後的數組長度。

pop()方法從陣列末端移除最後一項,然後傳回移除的項目。

unshift()方法在陣列前端加入任意數量的參數並傳回新陣列長度。

shift()方法能夠移除陣列中第一個項目並傳回移除的項目。

複製程式碼 程式碼如下:

var test=[];
var count = test.push('a','b');//從陣列結尾逐一加入
count =test.push('c');
alert(count);//3
alert(test);//
var item = test.pop();
alert(item);//c
alert(test.length);//2

排序方法:reverse()和sort()

reverse()方法會反轉數組項順,操作數組本身。

sort()方法預設依升序排列數組項,操作數組本身。

複製程式碼 程式碼如下:

var test=[1,2,3,4,5];
test.reverse();
alert(test);//5,4,3,2,1
var test2=[0,1,5,10,15];
test2.sort();
alert(test2);//0,1,10,15,5    sort()方法會呼叫每個陣列項目的toString()方法,比較字串,以確定排序。所以這裡排序是字串排序

sort()方法也可以傳入一個比較函數。

比較函數在第一個參數應該位於第二個之前則回傳一個負數,如果兩個參數相等則回傳0,第一個參數應該位於第二個之後則傳回一個正數。

複製程式碼 程式碼如下:

function compare(value1,value2){
    if(value1         return -1;
    }else if(value1>value2){
        return 1;
    }else{
         return 0;
    }
}   
var test=[0,1,5,10,15];
test.sort(compare);
alert(test);//0,1,5,10,15  

操作方法:concat()、slice()、splice()

concat()方法用於連接兩個或多個陣列。此方法不會改變現有的數組,而只會傳回被連接數組的一個副本。傳回一個新的陣列。

複製程式碼 程式碼如下:

var a = [1,2,3];
alert(a.concat(4,5));//1,2,3,4,5
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"
arr2[2] = "Martin"
alert(arr.concat(arr2));
//George,John,Thomas,James,Adrew,Martin
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"
arr2[2] = "Martin"
var arr3 = new Array(2)
arr3[0] = "William"
arr3[1] = "Franklin"
alert(arr.concat(arr2,arr3))
//George,John,Thomas,James,Adrew,Martin,William,Franklin

slice() 方法可從現有的陣列中傳回選定的元素。傳回一個新的數組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。

複製程式碼 程式碼如下:

var test =['a','b','c','d','e'];
var arr1=test.slice(1);
var arr2=test.slice(1,4);
alert(arr1);//b,c,d,e
alert(arr2);//b,c,d

splice() 方法向/從陣列中新增/刪除項目,然後傳回已刪除的項目。操作數組本身。

第一個參數:起始位置、第二個參數:截取的個數、第三個參數:追加的新元素。

複製程式碼 程式碼如下:

//刪除
var test=['a','b','c'];
var removed=test.splice(0,1)//刪除第一項
alert(test);//b,c
alert(removed);//a 傳回已刪除的項目
//插入
var test2=['a','b','c'];
var removed2=test2.splice(1,0,'d','e')//從位置1開始插入d,e
alert(test2);//a,d,e,b,c
alert(removed2)//空數組
//替換
var test3=['a','b','c'];
var removed3=test3.splice(1,1,'d','e')//從位置1開始插入d,e
alert(test3);//a,d,e,c
alert(removed3)//b

位置方法:indexOf()、lastIndexOf()

ECMAScript5提供方法支援瀏覽器:IE9 、Firefox 2 、Safari 3 、Opera 9.5 、Chrome

indexOf() 方法可傳回某個指定的字串值在字串中首次出現的位置。

lastIndexOf() 方法可傳回一個指定的字串值最後出現的位置,在一個字串中的指定位置從後向前搜尋。

 一個參數時:表示要尋找的值,返回索引位置(從0開始)、兩個參數時:第一個參數表示起始位置,第二個參數表示要找出的值。

複製程式碼 程式碼如下:

var numbers=[1,2,3,4,5,4,3,2,1];
alert(numbers.indexOf(4));//3
alert(numbers.lastIndexOf(4));//5

alert(numbers.IndexOf(4,4));//5
alert(numbers.lastIndexOf(4,4));//3

迭代方法:every()、filter()、forEach()、map()、some()

ECMAScript5提供方法支援瀏覽器:IE9 、Firefox 2 、Safari 3 、Opera 9.5 、Chrome

every():對數組中的每一項運行給定函數,如果函數對每一項都傳回true,則傳回true。

filter():對陣列中的每一項執行給定函數,傳回函數會傳回true的項組成的陣列。

forEach():對數組中的每一項運行給定函數,這個方法沒有傳回值。

map():對數組中的每一項運行給定函數,傳回每次函數呼叫的結果組成的數組。

some():對數組中的每一項運行給定函數,如果函數對任一項傳回true,則傳回true。

以上函數都不會修改數組中包含的值。

複製程式碼 程式碼如下:

var numbers=[1,2,3,4,5,4,3,2,1];
//every()
var everyResult=numbers.every(function(item,index,array){
      return (item>2);
})
alert(everyResult);//false
//some()
var someResult=numbers.some(function(item,index,array){
      return (item>2);
})
alert(someResult);//true
//filter()
var filterResult=numbers.filter(function(item,index,array){
      return (item>2);
})
alert(filterResult);//[3,4,5,4,3]

//map()
var mapResult=numbers.map(function(item,index,array){
      return (item*2);
})
alert(mapResult);//[2,4,6,8,10,8,6,4,2]

//forEach()
numbers.forEach(function(item,index,array){
      //執行操作 無回傳值
})

歸併方法:reduce()、reduceRight()

 ECMAScript5提供方法支援瀏覽器:IE9 、Firefox 3 、Safari 4 、Opera 10.5 、Chrome

 兩個方法都會迭代數組的所以項,然後建立一個最終回傳的值。 reduce()方法從陣列第一項開始,reduceRight()方法從陣列最後開始。

複製程式碼 程式碼如下:

var values=[1,2,3,4,5];
var sum=valuse.reduce(function(prev,cur,index,array){
         prev cur;
});
alert(sum);//15

以上就是本文的全部內容了,希望大家能夠喜歡。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板