欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Javascript數(shù)組Array方法解讀

 更新時間:2016年03月13日 11:18:43   投稿:hebedich  
這篇文章是Javascript數(shù)組Array系列文章的第二篇,主要給大家講解的是javascript數(shù)組arrayd的所有方法,希望大家能夠喜歡。

接上一篇《Javascript數(shù)組Array基礎介紹》,這一篇詳細介紹Array的所有方法。

所有數(shù)組的方法都定義在Array.prototype上,而Array.prototype本身也是一個數(shù)組。

array.concat()

淺復制一份當前數(shù)組,并把接收到的參數(shù)附加到新數(shù)組的末尾。原數(shù)組不改變。

語法

array.concat(value1, value2, ..., valueN)
參數(shù)為需要合并的數(shù)組或非數(shù)組值

var arr1 = [1, 2, 3];
var obj = {animal : 'monkey'};
var arr2 = arr1.concat([4, 5, 6], obj, [7, 8, 9]);
// arr1 [1, 2, 3]
// arr2 [1, 2, 3, 4, 5, 6, {animal : 'monkey'}, 7, 8, 9]

obj.animal = 'tiger';
// [1, 2, 3, 4, 5, 6, {animal : 'tiger'}, 7, 8, 9]

可以合并數(shù)組或非數(shù)組值,但是要注意如果包含對象,對象還是引用原來的對象。

array.join()

返回一個將數(shù)組所有元素用分隔符拼接成的字符串,默認分隔符為逗號。

語法

array.join(seperator)
參數(shù)為分割符

var arr1 = [1, 2, 3];
var str = arr1.join(); // 1,2,3
str = arr1.join('#'); // 1#2#3

當將大量字符串片段組裝時,join方法比+元素運算符要快。

利用new Array(3)將生成一個長度為三的空數(shù)組,同時結(jié)合join()方法,可以實現(xiàn)重復某段字符串。

var str = new Array(3).join('-+'); // -+-+

重復的次數(shù)就是數(shù)組長度減一,因為字符串是分隔符。

由于數(shù)組本身是對象,擁有toString()方法,利用它也能實現(xiàn)將數(shù)組拼接成一個字符串,只不過分隔符只能是逗號了。

var arr1 = [1, 2, 3];
arr1.toString(); // 1,2,3

實際上它會先調(diào)用每一個元素的toString()方法。

array.push()

把一個或多個參數(shù)附加在數(shù)組末尾,返回數(shù)組長度。改變數(shù)組自身。

語法

array.push(value1, value2, ..., valueN);
實例

var arr1 = [1, 2, 3];
var len = arr1.push(4, 5);

console.log(len); // 5
console.log(arr1); // [1, 2, 3, 4, 5]

另一種方法也可以實現(xiàn)在數(shù)組末尾插入值。

arr1[arr1.length] = 6; // [1, 2, 3, 4, 5, 6]  
array.pop()

將數(shù)組最后一項刪除,并返回刪除項。改變數(shù)組自身。

var arr1 = [1, 2, 3];
arr.pop(); // [1, 2] 返回 3

如果數(shù)組為空,返回undefined。

array.unshift()

把一個或多個參數(shù)插入到數(shù)組頭部,返回數(shù)組長度。改變數(shù)組自身。

var arr1 = [1, 2, 3];
var len = arr1.unshift(4, 5);

console.log(len); // 5
console.log(arr1); // [4, 5, 1, 2, 3]

array.shift()

將數(shù)組的第一項刪除,并返回刪除項。改變數(shù)組自身。

var arr1 = [1, 2, 3];
arr.shift(); // [2, 3] 返回 1

如果數(shù)組為空,返回undefined。

array.sort()

這個方法按照每個元素的toString()方法返回的值進行排序,所以一般得不到期望的結(jié)果。

var arr1 = [1, 2, 3, 14, 24];
arr1.sort(); // [1, 14, 2, 24, 3]

但是sort()方法可以接收一個我們自定義的函數(shù)進行比較。比較函數(shù)接受兩個參數(shù),尤其sort()默認是升序,所以如果想讓第一個參數(shù)位于第二個參數(shù)前面就要返回負數(shù),相等返回0,位于后面返回正數(shù)。

var compare = function(a, b){
  return a - b;
}

var arr2 = [1, 12, 2, 23, 3 , 5, 4];
arr2.sort(compare); // [1, 2, 3, 4, 5, 12, 23]

比較字符串可以結(jié)合string.localeCompare()方法來用。

var arr3 = ['F', 'e', 'f', 'E'];
arr3.sort(function(a, b){
  return a.localeCompare(b);
});
// ['e', 'E', 'f', 'F'] 

array.reverse()

反轉(zhuǎn)數(shù)組元素順序,返回數(shù)組自身。

var arr1 = [1, 4, 3, 2];
arr1.reverse(); // [2, 3, 4, 1]

array.slice()

對數(shù)組淺復制其中的一段,不改變數(shù)組自身。

array.slice(start, end);
方法接受兩個參數(shù),最后一個可以省略,默認是數(shù)組自身長度。

var arr1 = [1, 2, 3, 4, 5, 6];

arr1.slice(4); // [5, 6]
arr1.slice(2, 4); // [3, 4]
arr1.slice(-3); // [4, 5, 6]

如果傳入負數(shù),那么會被自動加上數(shù)組的長度,試圖變成非負數(shù)。
傳入一個絕對值小于數(shù)組長度的值,就是從后向前取負數(shù)絕對值個數(shù)的元素。例如例子中取了后三個元素。

array.splice()

這是數(shù)組中最強大也最常用對的方法了,可以實現(xiàn)刪除,插入,替換。

語法

array.slice(start, count, item);
該方法移除一個或多個元素,并用新的元素替代他們。start是開始的位置,count是刪除的數(shù)量,item是新增加的元素(item不止一個,也可省略),以數(shù)組形式返回刪除的元素。

var arr1 = [1, 2, 3, 4, 5];
//刪除
arr1.splice(2, 1); // [1, 2, 4, 5] 返回 [3]
//插入
arr1.splice(3, 0, 6, 7); // [1, 2, 4, 6, 7, 5]
//替換
arr1.splice(1, 2, 8, 9); // [1, 8, 9, 6, 7, 5] 返回[2, 4]

下面介紹一些ECMAScript5新增的方法,主要是ie8不支持。

indexOf() 與 lastIndexOf()

查找對應項在數(shù)組中的索引位置,第二個參數(shù)表示對應查找方向的起始位置,返回第一個匹配的位置,如果沒有找到則返回-1;
indexOf()是從前往后查找,lastIndexOf()是從后往前查找。

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

arr1.lastIndexOf(3); // 4
arr1.lastIndexOf(3, 4) // 2

迭代方法

以下方法接受兩個參數(shù),第一個是每一項運行的函數(shù),第二個函數(shù)運行的作用域。
運行函數(shù)有三個參數(shù),分別是當前項,位置,數(shù)組本身。

array.every()

運行給定函數(shù),如果迭代每一項都返回true,則最終返回true。

var arr1 = [1, 2, 3, 4, 5];
arr1.every(function(item, index, array){
  return item > 3;
});
// false

array.some()

運行給定函數(shù),如果迭代中有一項返回true,則最終返回true。

arr1.some(function(item, index, array){
  return item > 3;
});
// true

array.map()

運行給定函數(shù),將迭代中返回的值組成數(shù)組,返回該數(shù)組。

arr1.map(function(item, index, array){
  return item * 2;
});
// [2, 4, 6, 8, 10]

array.filter()

運行給定函數(shù),將迭代中返回true的元素以數(shù)組形式返回

arr1.filter(function(item, index, array){
  return item > 3;
});
// [4, 5]

array.forEach()

運行給定函數(shù),不返回任何值。類似于普通的for循環(huán)的功能。

歸并方法

函數(shù)接受兩個參數(shù),第一個參數(shù)是每一個運行的自定義函數(shù),第二項是作為歸并基礎的初始值。
自定義函數(shù)接受四個參數(shù),分別是前一項,當前項,位置,數(shù)組。

array.reduce() 與 array.reduceRight()
var splitstr = function(prev, item, index, array){
  return prev + '#' + item;
}

var arr1 = [1, 2, 3, 4, 5];
arr1.reduce(splitstr, 8); // 8#1#2#3#4#5
arr1.reduceRight(splitstr, 8); // 8#5#4#3#2#1

小結(jié)

這一篇介紹了數(shù)組方法的種種細節(jié)和注意問題,下一篇將會介紹數(shù)組更高級的用法。本篇后續(xù)會添加ECMAScript6 新增加的數(shù)組方法的介紹。

相關(guān)文章

最新評論