本文實例匯總了JavaScript數(shù)組的常用操作技巧。分享給大家供大家參考。具體如下:
前言
相信大家都用慣了jquery或者underscore等這些類庫中常用的數(shù)組相關(guān)的操作,如$.isArray,_.some,_.find等等方法。這里無非是對原生js的數(shù)組操作多了一些包裝。
這里主要匯總一下JavaScript數(shù)組操作的常用API。相信對大家解決程序問題很有幫助。
一、性質(zhì)
JavaScript中的數(shù)組是一種特殊的對象,用來表示偏移量的索引是該對象的屬性,索引可能是整數(shù)。然而,這些數(shù)字索引在內(nèi)部被轉(zhuǎn)換為字符串類型,這是因為JavaScript對象中的屬性名必須是字符串。
二、操作
1 判斷數(shù)組類型
2 數(shù)組與字符串
非常簡單:由數(shù)組轉(zhuǎn)換為字符串,使用join;由字符串轉(zhuǎn)換為數(shù)組,使用split。
3 查找元素
相信大家都常用字符串類型indexOf,卻很少知道數(shù)組的indexOf同樣可以用于查找元素。
//
var objInArray = [
{
name: 'king',
pass: '123'
},
{
name: 'king1',
pass: '234'
}
];
console.log(objInArray.indexOf({
name: 'king',
pass: '123'
})); // -1
var elementOfArray = objInArray[0];
console.log(objInArray.indexOf(elementOfArray)); // 0
從以上可以看出,對于數(shù)組包含對象的這種數(shù)組,indexOf方法并非是經(jīng)過深度比較來得到對應(yīng)的查找結(jié)果,僅僅是比較對應(yīng)元素的引用。
4 數(shù)組連接
使用concat,要注意,使用concat之后會生成一個新的數(shù)組。
用于添加元素,可分別使用push和unshift,移除元素可分別使用pop和shift。
// 添加到數(shù)組尾部
array.push(6);
console.log(array); // [2, 3, 4, 5, 6]
// 添加到數(shù)組頭部
array.unshift(1);
console.log(array); // [1, 2, 3, 4, 5, 6]
// 移除最后一個元素
var elementOfPop = array.pop();
console.log(elementOfPop); // 6
console.log(array); // [1, 2, 3, 4, 5]
// 移除第一個元素
var elementOfShift = array.shift();
console.log(elementOfShift); // 1
console.log(array); // [2, 3, 4, 5]
6 splice方法
主要兩個用途:
① 從數(shù)組中間位置添加和刪除元素
② 從原有數(shù)組中,獲取一個新數(shù)組
當(dāng)然,兩個用途是一氣合成的,有些場景注重用途一,有些則注重用途二。
從數(shù)組中間位置添加和刪除元素,splice方法為數(shù)組添加元素,需提供如下參數(shù)
① 起始索引(也就是你希望開始添加元素的地方)
② 需要刪除的元素的個數(shù)或者是提取的元素的個數(shù)(添加元素時該參數(shù)設(shè)置為0)
③ 想要添加進(jìn)數(shù)組的元素
7 排序
主要介紹reverse和sort兩個方法。數(shù)組反轉(zhuǎn)使用reverse,sort方法不僅可以用于簡單排序,也可以用于復(fù)雜排序。
var objInArray = [
{
name: 'king',
pass: '123',
index: 2
},
{
name: 'king1',
pass: '234',
index: 1
}
];
// 對數(shù)組中的對象元素,根據(jù)index進(jìn)行升序
var compare = function(o1, o2) {
return o1.index > o2.index;
};
objInArray.sort(compare);
console.log(objInArray[0].index < objInArray[1].index); // true
8 迭代器方法
主要包含forEach和every、some和map、filter
forEach相信大家都會,主要介紹一下其他四種方法。
every方法接受一個返回值為布爾類型的函數(shù),對數(shù)組中的每個元素使用該函數(shù)。如果對于所有的元素,該函數(shù)均返回true,則該方法返回true。
some方法也接受一個返回值為布爾類型的函數(shù),只要有一個元素使得該函數(shù)返回true,該方法就返回true。
var isEven = function(num) {
return num % 2 === 0;
};
var nums1 = [1, 2, 3, 4];
console.log(nums1.some(isEven)); // true
map和filter這兩個方法都可以產(chǎn)生新數(shù)組,map返回的新數(shù)組是對原有元素應(yīng)用某個函數(shù)得到的結(jié)果。如:
三、總結(jié)
以上還存在某些方法在低級瀏覽器不支持的問題,還需要再采用其他方法進(jìn)行兼容實現(xiàn)。
這些都是常見的可能大家不太容易想到的方法。大家不妨多留意一下。
希望本文所述對大家的javascript程序設(shè)計有所幫助。
|
新聞熱點
疑難解答
圖片精選