所謂數組,就是無序的元素序列。 若將有限個類型相同的變數的集合命名,那麼這個名稱為數組名。組成數組的各個變數稱為數組的分量,也稱為數組的元素,有時也稱為下標變數。用於區分數組的各個元素的數字編號稱為下標。數組是在程式設計中,為了處理方便, 把具有相同類型的若干元素以無序的形式組織起來的一種形式。 這些無序排列的同類資料元素的集合稱為數組。本文我們主要和大家分享最完整的陣列方法彙總,我們將使用原生javascript方法,希望能幫助大家。
建立陣列
var colors = []; var colors = ['red', 'blue'];
偵測陣列
if(arr instanceof Array) {}
如果網頁中包含多個框架,則需要使用下面的方式來偵測陣列
if(Array.isArray(arr)) {}
# arr.valueOf()
var colors = ['red', 'yellow']; colors.valueOf(); // > ['red', 'yellow']
arr.toString()
var colors = ['red', 'yellow']; colors.toString(); // > "red,yellow"
arr.push(item)
#從陣列末端新增元素,並傳回新陣列的長度
var colors = ['red', 'yellow']; colors.push('pink'); // > 3
arr.pop()
從陣列結尾刪除元素,並傳回被刪除的元素
var colors = ['red', 'yellow']; colors.pop(); // > 'yellow'
arr.unshift(item)
從陣列頭部新增元素,並傳回新陣列的長度
var colors = ['green', 'pink']; colors.unshift('pink'); // > 3
arr.shift ()
從陣列頭刪除元素,並傳回已刪除的元素
var colors = ['yellow', 'orange']; colors.shift(); // > 'yellow'
arr.reverse()
反轉數組的順序,並傳回重新排序之後的數組, 原始數組會被改變
[1, 2, 3, 'reer', 'game', 2, 5].reverse(); // > [5, 2, "game", "reer", 3, 2, 1]
arr.sort(fn)
如果不傳參數,預設情況下陣列內的元素會轉換為字串進行比較,因此一般不建議直接使用預設的arr.sort()
進行排序。
傳回值為排序後的新陣列。原始數組會被改變
將陣列內數值元素從小到大排序。
var demo = [1, 4, 2, 'reee', 'name', '9', 'doc']; demo.sort(function(a, b)) { return a - b; } // > [1, 2, 4, "reee", "name", "9", "doc"]
將陣列內數值元素從大到小排序
var demo = [1, 4, 2, 'reee', 'name', '9', 'doc']; demo.sort(function(a, b) { return b - a; }) // > [4, 2, 1, "reee", "name", "9", "doc"]
arr.concat(otherArr )
參數中傳入元素或數組, 會將參數合併到arr中,傳回合併後新的數組,原始數組不會改變
var arr = [1, 3, 'jake']; arr.concat('rose', [2, 'fi']); // > [1, 3, 'jake', 'rose', 2, 'fi']
arr .slice()
剪切數組,傳回剪切之後的數組,元素不會改變
傳入一個參數,表示起始位置,結束位置為最末端
var arr = [4, 2, 1, "reee", "name", "9", "doc"]; arr.slice(2); // > [1, "reee", "name", "9", "doc"]
傳入2個參數,表示起始位置與結束位置,但不包含結束位置的元素
var arr = [4, 2, 1, "reee", "name", "9", "doc"]; arr.slice(2, 4); // > [1, "reee"]
arr.splice()
根據參數的不同,可以分別實現刪除,插入,替換元素的作用,會改變原始陣列
刪除
傳入2個參數,分別表示起始位置與要刪除元素的個數,回傳被刪除由掉的元素組成的陣列
var arr = [4, 2, 1, "reee", "name", "9", "doc"]; arr.splice(2, 3); // > [1, "reee", "name"] // arr: [4, 2, 1, "9", "doc"]
插入
#傳入3個參數,[起始位置| 要刪除的項數為0 | 要插入的元素], 最終傳回刪除掉的元素所組成的數組,因為這裡刪除項數為0,因此會傳回空數組
var arr = [2, 4, 6]; arr.splice(2, 0, 'red', 'green'); // > [] // arr: [2, 4, "red", "green", 6]
取代
傳入三個參數, [ 起始位置| 要刪除的項目數為1 | 要插入的元素],最後傳回被刪除掉的元素組成的陣列
var arr = [2, 4, 9];
arr.splice(1, 1, ['tim', 'tom']);
// > [4]
// arr: [2, ['tim', 'tom'], 9]
總結因此,這個方法會因為參數的不同而實現不同的功能,所有的參數從頭到尾依序為
[ 起始位置| 要刪除元素的數量| 要插入元素的值,可以寫入多個值]
arr.indexOf(item)
驗證陣列中是否含有某個元素,傳回第一個符合的元素在陣列中的位置,如果沒有,則傳回-1var arr = [2, 'tim', 4, 5, 2];
arr.indexOf('tim');
// > 1
arr.indexOf('jake');
// > -1
驗證數組中是否含有某個元素,不過是從數組尾部開始查找,返回第一個匹配到的元素所在的位置,如果沒有,則返回-1
var arr = [2, 'tim', 4, 5, 2]; arr.lastIndexOf('tim'); // > 1 arr.indexOf('jake'); // > -1
IE6, 7, 8 不支援indexOf與lastIndexOf方法
arr.every()
#對陣列中的每一項運行給定函數,如果函數對每一項都傳回true,則傳回true。會有一個函數作為every的參數,該函數也有3個參數,分別為
[ 呼叫every的數組的每一項元素| 對應元素所在的位置| 表示該數組]
var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1]; var everyRes = numbers.every(function(item, index, array) { return item > 2; }) // > false###arr.some()#########對陣列中的每一項執行給定函數,如果函數對其中一項傳回true,則傳回true。會有一個函數作為every的參數,該函數也有3個參數,分別為######[ 調用every的數組的每一項元素| 對應元素所在的位置| 表示該數組]##### #
var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1]; var everyRes = numbers.some(function(item, index, array) { return item > 2; }) // > true######arr.filter(fn)#########過濾方法。傳回滿足條件的元素組成的陣列。 fn的參數為######[ 呼叫every的陣列的每一項元素 | 對應元素所在的位置 | 表示該陣列 ]#######
var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1]; var everyRes = numbers.filter(function(item, index, array) { return item > 2; }) // > [ 3, 4, 5, 4, 3 ]
arr.map(fn)
对数组的每一项进行计算等处理,返回处理结果组成的数组,fn的参数为
[ 调用every的数组的每一项元素 | 对应元素所在的位置 | 表示该数组 ]
var numbers = [1, 2, 3, 3, 2, 1]; var everyRes = numbers.map(function(item, index, array) { return item > 2; }) // >[false, false, true, true, false, false]
arr.forEach(fn)
遍历数组,没有返回值,fn的参数为
[ 调用every的数组的每一项元素 | 对应元素所在的位置 | 表示该数组 ]
numbers.forEach(function(item, index) { // do something })
arr.reduce(fn)
缩减方法。fn的参数为
[ 前一个元素 | 当前元素,从1开始 | 后一个元素的序列,从1开始计数 | 表示该数组 ]
var values = [1, 2, 3, 4, 5]; var sum = values.reduce(function(prev, cur, index, array) { return prev + cur; }) // > 15 //每一次迭代之后的结果分别为 // [3, 3, 4, 5] // [6, 4, 5] // [10, 5] // 15
arr.reduceRight(fn)
与reduce一模一样,只是方向相反。
jQuery相关方法
$.each(arr, fn)
遍历数组或者对象,fn有2个参数,分别为, 比原生的for in 更加健壮
[ 数组的索引或者对象的key值 | 索引或者key值对应的value值 ]
var arr = [1, 2, 3]; $.each(arr, function(key, value) { // do something });
跳过一次循环
return | return true
终止循环
return false
$.grep(arr, fn)
过滤方法,功能类同原生中的arr.filter(fn)
。此处fn的参数如下
[ value: 对象/数组的值 | key值或者序列 ]
var arr = [ 1, 3, 6, 4 ]; $.grep(arr, function(val, key) { return val >= 3; }); // > [3, 6, 4] // arr : [ 1, 3, 6, 4 ] 不会改变
$.map(arr, fn)
对每项进行处理,返回处理结果组成的数组,此处fn的参数如下
[ value: 对象/数组的值 | key值或者序列 ]
var arr = [1, 2, 5, 3]; $.map(arr, function(val, key) { return val * 10; }) // > [10, 30, 30, 20, 10] // 原数组不受影响
$.inArray(item, array)
检测某一个元素item是否存在与数组之中,返回其所在的位置,如果不在,则返回-1
$.inArray(3, [1, 2, 3]); // > 2
$.merge(arr1, arr2)
合并数组,会改变第一个参数的数组为合并之后的数组,返回合并之后的数组
var arr = [1, 3, 4]; var arr2 = [4, 3, 1]; $.merge(arr, arr2); // > [1, 3, 4, 4, 3, 1] // 为了防止第一个数组被改变,可以使用下面的方式来写 $.merge($.merge([], arr), arr2);
$.unique(arr)
过滤DOM数组中重复的元素
$.makeArray(obj)
将类数组对象转换为数组
$(elem).toArray()
将jQuery对象集合恢复成DOM数组
相关推荐:

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

WebStorm Mac版
好用的JavaScript開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能