亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

JavaScript數組常用操作技巧匯總

2024-05-06 16:10:43
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JavaScript數組常用操作技巧,以實例形式匯總了針對數組的查找、連接、排序及迭代等各種常見操作技巧,非常具有實用價值,需要的朋友可以參考下
 
 

本文實例匯總了JavaScript數組的常用操作技巧。分享給大家供大家參考。具體如下:

前言

相信大家都用慣了jquery或者underscore等這些類庫中常用的數組相關的操作,如$.isArray,_.some,_.find等等方法。這里無非是對原生js的數組操作多了一些包裝。
這里主要匯總一下JavaScript數組操作的常用API。相信對大家解決程序問題很有幫助。

一、性質
JavaScript中的數組是一種特殊的對象,用來表示偏移量的索引是該對象的屬性,索引可能是整數。然而,這些數字索引在內部被轉換為字符串類型,這是因為JavaScript對象中的屬性名必須是字符串。

二、操作

1 判斷數組類型

復制代碼代碼如下:
var array0 = [];    // 字面量
var array1 = new Array();   // 構造器
// 注意:在IE6/7/8下是不支持Array.isArray方法的
alert(Array.isArray(array0));
// 考慮兼容性,可使用
alert(array1 instanceof Array);
// 或者
alert(Object.prototype.toString.call(array1) === '[object Array]');

 

2 數組與字符串

非常簡單:由數組轉換為字符串,使用join;由字符串轉換為數組,使用split。

復制代碼代碼如下:
// join - 由數組轉換為字符串,使用join
console.log(['Hello', 'World'].join(','));    // Hello,World
// split - 由字符串轉換為數組,使用split
console.log('Hello World'.split(' '));    // ["Hello", "World"]

 

3 查找元素

相信大家都常用字符串類型indexOf,卻很少知道數組的indexOf同樣可以用于查找元素。

復制代碼代碼如下:
// indexOf - 查找元素
console.log(['abc', 'bcd', 'cde'].indexOf('bcd'));  // 1

 

// 
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

 

從以上可以看出,對于數組包含對象的這種數組,indexOf方法并非是經過深度比較來得到對應的查找結果,僅僅是比較對應元素的引用。

4 數組連接

使用concat,要注意,使用concat之后會生成一個新的數組。

復制代碼代碼如下:
var array1 = [1, 2, 3];
var array2 = [4, 5, 6];
var array3 = array1.concat(array2); // 實現數組連接之后,會創建出新的數組
console.log(array3);

5 類列表操作

 

用于添加元素,可分別使用push和unshift,移除元素可分別使用pop和shift。

復制代碼代碼如下:
// push/pop/shift/unshift
var array = [2, 3, 4, 5];

 

// 添加到數組尾部
array.push(6);
console.log(array); // [2, 3, 4, 5, 6]

// 添加到數組頭部
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方法

主要兩個用途:
① 從數組中間位置添加和刪除元素
② 從原有數組中,獲取一個新數組

當然,兩個用途是一氣合成的,有些場景注重用途一,有些則注重用途二。

從數組中間位置添加和刪除元素,splice方法為數組添加元素,需提供如下參數
① 起始索引(也就是你希望開始添加元素的地方)
② 需要刪除的元素的個數或者是提取的元素的個數(添加元素時該參數設置為0)
③ 想要添加進數組的元素

復制代碼代碼如下:
var nums = [1, 2, 3, 7, 8, 9];
nums.splice(3, 0, 4, 5, 6);
console.log(nums);  // [1, 2, 3, 4, 5, 6, 7, 8, 9] 
// 緊接著做刪除操作或者提取新的數組
var newnums = nums.splice(3, 4);
console.log(nums);  // [1, 2, 3, 8, 9]
console.log(newnums);   // [4, 5, 6, 7]

 

7 排序

主要介紹reverse和sort兩個方法。數組反轉使用reverse,sort方法不僅可以用于簡單排序,也可以用于復雜排序。

復制代碼代碼如下:
// 反轉數組
var array = [1, 2, 3, 4, 5];
array.reverse();
console.log(array); // [5, 4, 3, 2, 1]
我們先對字符串元素的數組進行排序
var arrayOfNames = ["David", "Mike", "Cynthia", "Clayton", "Bryan", "Raymond"];
arrayOfNames.sort();
console.log(arrayOfNames);  // ["Bryan", "Clayton", "Cynthia", "David", "Mike", "Raymond"]

我們對數字元素的數組進行排序
復制代碼代碼如下:
// 如果數組元素時數字類型,sort()方法的排序結果就不能讓人滿意了
var nums = [3, 1, 2, 100, 4, 200];
nums.sort();
console.log(nums);  // [1, 100, 2, 200, 3, 4]

sort方法是按照字典順序對元素進行排序的,因此它假定元素都是字符串類型,因此,即使元素是數字類型,也被認為是字符串類型。這時,可以在調用方法時傳入一個大小比較函數,排序時,sort()方法將會根據該函數比較數組中兩個元素的大小,從而決定整個數組的順序。
復制代碼代碼如下:
var compare = function(num1, num2) {
    return num1 > num2;
};
nums.sort(compare);
console.log(nums);  // [1, 2, 3, 4, 100, 200]

 

var objInArray = [
    {
        name: 'king',
        pass: '123',
        index: 2
    },
    {
        name: 'king1',
        pass: '234',
        index: 1
    }
];
// 對數組中的對象元素,根據index進行升序
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方法接受一個返回值為布爾類型的函數,對數組中的每個元素使用該函數。如果對于所有的元素,該函數均返回true,則該方法返回true。

復制代碼代碼如下:
var nums = [2, 4, 6, 8];
// 不生成新數組的迭代器方法
var isEven = function(num) {
    return num % 2 === 0;
};
// 如果都是偶數,才返回true
console.log(nums.every(isEven)); // true

 

some方法也接受一個返回值為布爾類型的函數,只要有一個元素使得該函數返回true,該方法就返回true。
var isEven = function(num) {
    return num % 2 === 0;
};
var nums1 = [1, 2, 3, 4];
console.log(nums1.some(isEven)); // true

 

map和filter這兩個方法都可以產生新數組,map返回的新數組是對原有元素應用某個函數得到的結果。如:

復制代碼代碼如下:
var up = function(grade) {
    return grade += 5;
}
var grades = [72, 65, 81, 92, 85];
var newGrades = grades.ma

filter方法和every方法很類似,傳入一個返回值為布爾類型的函數。和every()方法不同的是,當對數組中的所有元素應用該函數,結果均為true時,該方法并不返回true,而是返回一個新數組,該數組包含應用該函數后結果為true的元素。
復制代碼代碼如下:
var isEven = function(num) {
    return num % 2 === 0;
};
var isOdd = function(num) {
    return num % 2 !== 0;
};
var nums = [];
for (var i = 0; i < 20; i++) {
    nums[i] = i + 1;
}
var evens = nums.filter(isEven);
console.log(evens); // [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] 
var odds = nums.filter(isOdd);
console.log(odds);  // [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

 

三、總結

以上還存在某些方法在低級瀏覽器不支持的問題,還需要再采用其他方法進行兼容實現。

這些都是常見的可能大家不太容易想到的方法。大家不妨多留意一下。

希望本文所述對大家的javascript程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲色图五月天| 日韩成人在线播放| 中文欧美在线视频| 成人福利网站在线观看| 黄网站色欧美视频| 欧美日韩精品在线播放| 国产精品久久久久久影视| 亚洲精品欧美一区二区三区| 亚洲欧洲日产国码av系列天堂| 91精品在线播放| 亚洲性日韩精品一区二区| 成人观看高清在线观看免费| 国产精品第100页| 亚洲成人久久久| www.欧美视频| 亚洲欧美综合图区| 国产精品久久综合av爱欲tv| 91经典在线视频| 久久久精品欧美| 国产伊人精品在线| 欧美日韩国产精品| 欧美日韩亚洲激情| 92国产精品视频| 国内揄拍国内精品| 亚洲第一偷拍网| 成人午夜在线观看| 欧美性视频网站| 久久精品国产亚洲精品2020| 亚洲午夜精品久久久久久久久久久久| 欧美乱大交xxxxx| 日韩av男人的天堂| 97视频在线观看视频免费视频| 欧美日本国产在线| 国产91av在线| 欧洲日本亚洲国产区| 欧美www视频在线观看| 成人妇女淫片aaaa视频| 2019中文字幕全在线观看| 欧美一区三区三区高中清蜜桃| 久久人人爽人人爽人人片亚洲| 成人精品久久一区二区三区| 久久91精品国产| 菠萝蜜影院一区二区免费| 91产国在线观看动作片喷水| 国产精品青草久久久久福利99| 免费91麻豆精品国产自产在线观看| 亚洲片国产一区一级在线观看| 夜夜嗨av色一区二区不卡| 国产精品日韩欧美大师| 成人午夜激情网| 亚洲国模精品一区| 久久亚洲精品一区| 国产精品视频26uuu| 78m国产成人精品视频| 国产香蕉精品视频一区二区三区| 国产精品自产拍在线观看中文| 在线播放国产精品| 国产在线播放不卡| 中文字幕精品www乱入免费视频| 成人黄色av网站| 久久99久久99精品中文字幕| 日韩综合中文字幕| 欧美丰满少妇xxxxx做受| 欧美俄罗斯乱妇| 色综合久久天天综线观看| 亚洲欧美激情精品一区二区| 午夜精品久久久99热福利| 黄色成人av网| 在线观看亚洲区| 上原亚衣av一区二区三区| 国产日韩在线看片| 岛国精品视频在线播放| 日韩免费不卡av| 国产a级全部精品| 热久久这里只有| 精品高清美女精品国产区| 日韩欧美在线字幕| 久久国内精品一国内精品| 伊人久久免费视频| 欧美性猛交99久久久久99按摩| 欧美视频一二三| 色综久久综合桃花网| 91po在线观看91精品国产性色| 97婷婷涩涩精品一区| 久久久国产一区二区| 成人自拍性视频| 久久久人成影片一区二区三区观看| 欧美成人精品在线视频| 久久九九热免费视频| 久久九九有精品国产23| 午夜精品视频网站| 夜夜嗨av色一区二区不卡| 亚洲视频在线免费看| 国产精品高清免费在线观看| 一本色道久久88亚洲综合88| 国产精品视频精品视频| 亚洲日本中文字幕免费在线不卡| 日韩成人在线视频| 国产日韩在线看| 91精品国产九九九久久久亚洲| 91久久精品美女| 97视频免费在线看| 中文字幕亚洲国产| 久久综合伊人77777| 欧美成年人网站| 日韩黄色在线免费观看| 欲色天天网综合久久| 国产亚洲欧美一区| 久久中文字幕视频| 国产精品mp4| 亚洲最大av网站| 久久精品在线播放| 性日韩欧美在线视频| 日韩免费av在线| 91精品久久久久久久久久久久久| 伊人伊人伊人久久| 亚洲新中文字幕| 亚洲欧美制服另类日韩| 亚洲2020天天堂在线观看| 国产综合香蕉五月婷在线| 亚洲欧美日韩精品久久| 国产一区二中文字幕在线看| 精品视频—区二区三区免费| 国产91在线视频| 亚洲精品成人久久久| 中文字幕视频一区二区在线有码| 日本精品va在线观看| 日本国产精品视频| 91精品国产综合久久久久久蜜臀| 中文字幕久热精品在线视频| 中文字幕欧美精品日韩中文字幕| 日本一本a高清免费不卡| 国产美女被下药99| 色妞久久福利网| 国产第一区电影| 日韩欧美成人区| 欧美精品中文字幕一区| 亚洲男女性事视频| 亚洲色图美腿丝袜| 国产精品久久久久免费a∨| 一本一本久久a久久精品牛牛影视| 国产精品h片在线播放| 91精品在线国产| 欧美色另类天堂2015| 91av视频在线观看| 亚洲欧美制服另类日韩| 国产精品欧美日韩| 国产91精品久久久久久| 日韩精品极品在线观看播放免费视频| 国产91精品久久久久| 美日韩精品免费视频| xxxx性欧美| 亚洲国产精品人久久电影| 国产一区二区三区在线视频| 国产69精品久久久| 国产精品成人av性教育| 亚洲第一色中文字幕| 日本高清久久天堂| 成人国产在线激情| 色视频www在线播放国产成人| 亚洲另类xxxx| 国产精品久久久久久av福利| 成人国产亚洲精品a区天堂华泰| 国产精品久久二区|