這篇文章帶給大家的內容是關於javascript陣列操作方法總結一覽(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
ECMAScript為操作已經包含在陣列中的項目提供了許多方法。這裡本人總結一下自己對這些方法的理解,如此之多的方法中,我首先已是否會改變原數組做為分類標準,逐個解釋一下每一個方法。
使用方法:array.concat(array2,array3,...,arrayX)
傳回值: 傳回一個新的陣列
concat()方法用於連接兩個或多個陣列。此方法不會改變現有的數組,只會傳回被連接數組的一個副本。
在沒有傳遞參數的情況下,它只是複製目前數組並傳回副本;如果傳遞的值不是數組,這些值就會簡單地添加到結果數組的末尾。
var arr1 = [1,2,3]; var arr2 = arr1.concat(4,[5,6]); console.log(arr1); // [ 1, 2, 3 ] console.log(arr2); // [ 1, 2, 3, 4, 5, 6 ]
使用方法:array.join(separator)
傳回值: 傳回一個字串
join()方法用來把數組中的所有元素放入一個字串。元素是透過指定的分隔符號進行分隔的,預設使用','號分割,不改變原始數組。
var arr1 = [1,2,3]; var arr2 = arr1.join(); console.log(arr1); // [ 1, 2, 3 ] console.log(arr2); // 1,2,3之前接觸過一個功能是需要產生多個連續的*,一開始是直接使用for迴圈可以做到,後面了解了join()方法後,發現其實一句話就可以弄好了。
var arr3 = ""; for(let i = 0; i < 15; i ++) { arr3 = arr3 + "*"; } console.log(arr3); // *************** var arr4 = new Array(16).join("*"); console.log(arr4); // ***************
使用方法:array.slice(start, end)
傳回值: 傳回一個新的數組,包含從start 到end (不包含該元素)的arrayObject 中的元素
slice()接受一或兩個參數,即要傳回項目的起始和結束位置。
在只有一個參數的情況下,slice()方法傳回從該參數指定位置到目前陣列結尾的所有項;
如果有兩個參數,改方法傳回起始和結束位置之間的項——但不包括結束位置的項。
如果參數為負數,規定從陣列尾部開始算起的位置。也就是說,-1 指最後一個元素,-2 指倒數第二個元素,以此類推。
var arr1 = [1,2,3,4,5,6]; var arr2 = arr1.slice(1); var arr3 = arr1.slice(2,4); var arr4 = arr1.slice(-4,-2); // 等价于 arr1.slice(2,4); console.log(arr1); // [ 1, 2, 3, 4, 5, 6 ] console.log(arr2); // [ 2, 3, 4, 5, 6 ] console.log(arr3); // [ 3, 4 ] console.log(arr4); // [ 3, 4 ]對於偽數組轉換為標準資料就用到了這個方法
Array.prototype.slice.call(arguments)
使用方法:array.some(function(currentValue,index,arr),thisValue)
傳回值: 布林值
或 ==> some()對數組中的每一項運行給定的函數,如果該函數對任一項傳回true,剩餘的元素不會再執行檢測;如果沒有滿足條件的元素,則傳回false。
function compare(item, index, arr){ return item > 10; } [2, 5, 8, 1, 4].some(compare); // false [20, 5, 8, 1, 4].some(compare); // true
使用方法:array.every(function(currentValue,index,arr),thisValue)
傳回值: 布林值
和 ==> every()對數組中的每一項運行給定的函數,如果函數對每一項返回true,剩餘的元素不會再執行檢測;如果其中有一個沒有滿足條件的元素,則回傳false。
function compare(item, index, arr){ return item > 10; } [20, 50, 80, 11, 40].every(compare); // true [20, 50, 80, 10, 40].every(compare); // false
使用方法:array.filter(function(currentValue,index,arr), thisValue)
傳回值: 傳回陣列
filter()方法建立一個新的數組,新數組中的元素是透過檢查指定數組中符合條件的所有元素。
對陣列的每一項都執行給定的函數,傳回結果為true的項所組成的陣列。
function filterArr(item, index, arr){ return item > 4; } [2, 5, 8, 1, 4].filter(filterArr); // [5,8]
使用方法:array.map(function(currentValue,index,arr), thisValue)
傳回值: 傳回陣列
map()方法傳回一個新數組,數組中的元素為原始數組元素呼叫函數處理後的值。
function mapArr(item, index, arr){ return item * 4; } [2, 5, 8, 1, 4].map(mapArr); // [8,20,32,4,16]經常筆試和麵試都會考到的一題-實作一個
map
陣列方法,以下是自己寫的一個方法var arr = [2, 4, 8, 6, 1]; Array.prototype.myMap = function (fn, thisValue) { var arr = this, len = arr.length, tmp = 0, result = []; thisValue = thisValue || null; for (var i = 0; i < len; i++) { var item = arr[i], index = i; tmp = fn.call(thisValue, item, index, arr); result.push(tmp); } return result } function mapArr(item, index, arr) { return item * 4; } arr.myMap(mapArr) // [8, 16, 32, 24, 4]
使用方法:array.forEach(function(currentValue, index, arr), thisValue)
傳回值: undefined
forEach() 方法用於呼叫陣列的每個元素,並將元素傳遞給回調函數。這個方法沒有回傳值。
本質上與使用for迴圈迭代數組一樣。
var items = [1, 2, 4, 7, 3]; var copy = []; items.forEach(function(item,index){ copy.push(item*index); }) console.log(items); // [ 1, 2, 4, 7, 3 ] console.log(copy); // [ 0, 2, 8, 21, 12 ]
使用方法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
#結果
參數 | 描述 |
---|---|
#function(total,currentValue , index,arr) |
#。用於執行每個數組元素的函數。 |
initialValue |
可選。傳遞給函數的初始值 |
函数参数
参数 | 描述 |
---|---|
total |
必需。初始值, 或者计算结束后的返回值。 |
currentValue |
必需。当前元素 |
currentIndex |
可选。当前元素的索引 |
arr |
可选。当前元素所属的数组对象。 |
这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。其中,reduce()方法中数组的第一项开始,逐个遍历到最后;而reduceRight()则从数组的最后一项开始,向前遍历到第一项。
如果没有设置initialValue,total的值为数组第一项,currentValue为数组第二项。
如果设置了initialValue,则total的值就是initialValue,currentValue为数组第一项。
var numbers = [65, 44, 12, 4]; function getSum(total,currentValue, index,arr) { return total + currentValue; } var res = numbers.reduce(getSum); console.log(numbers); // [ 65, 44, 12, 4 ] console.log(res); // 125 var numbers = [65, 44, 12, 4]; function getSum(total,currentValue, index,arr) { return total + currentValue; } var res = numbers.reduce(getSum, 10); // 初始值设置为10,所以最终结果也相应的加10 console.log(res); // 135具体reduce()方法用得好是能起到很大的作用的,对于批量修改从后台获取的数据十分有用,可以参考JS进阶篇--JS数组reduce()方法详解及高级技巧
使用方法:array.push(item1, item2, ..., itemX)
返回值: 返回新数组的长度
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
var arr= [65, 44, 12, 4]; var arr1 = arr.push(2,5); console.log(arr); // [ 65, 44, 12, 4, 2, 5 ] console.log(arr1); // 6
使用方法:array.pop()
返回值: 数组原来的最后一个元素的值(移除的元素)
pop()方法用于删除并返回数组的最后一个元素。返回最后一个元素,会改变原数组。
var arr = [65, 44, 12, 4]; var arr1 = arr.pop(); console.log(arr); // [ 65, 44, 12 ] console.log(arr1); // 4
使用方法:array.unshift(item1,item2, ..., itemX)
返回值: 返回新数组的长度
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。返回新长度,改变原数组。
var arr = [65, 44, 12, 4]; var arr1 = arr.unshift(1); console.log(arr); // [ 1, 65, 44, 12, 4 ] console.log(arr1); // 5
使用方法:array.shift()
返回值: 数组原来的第一个元素的值(移除的元素)
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。返回第一个元素,改变原数组。
var arr = [65, 44, 12, 4]; var arr1 = arr.shift(); console.log(arr); // [ 44, 12, 4 ] console.log(arr1); // 65
使用方法:array.sort(sortfunction)
返回值: 返回排序后的数组(默认升序)
P.S 由于排序是按照 Unicode code 位置排序,所以在排序数字的时候,会出现"10"在"5"的前面,所以使用数字排序,你必须通过一个函数作为参数来调用。
var values = [0, 1, 5, 10, 15]; values.sort(); console.log(values); // [ 0, 1, 10, 15, 5 ] values.sort(function(a, b){ return a - b; }) console.log(values); // [0, 1, 5, 10, 15 ]
使用方法:array.reverse()
返回值: 返回颠倒后的数组
reverse() 方法用于颠倒数组中元素的顺序。返回的是颠倒后的数组,会改变原数组。
var values = [0, 1, 5, 10, 15]; values.reverse(); console.log(values); // [ 15, 10, 5, 1, 0 ]
使用方法:array.fill(value, start, end)
返回值: 返回新的被替换的数组
fill()方法用于将一个固定值替换数组的元素。
参数 | 描述 |
---|---|
value | 必需。填充的值。 |
start | 可选。开始填充位置。 |
end | 可选。停止填充位置(不包含) (默认为 array.length) |
var values = [0, 1, 5, 10, 15]; values.fill(2); console.log(values); // [ 2, 2, 2, 2, 2 ] values = [0, 1, 5, 10, 15]; values.fill(2,3,4); console.log(values); // [ 0, 1, 5, 2, 15 ]
使用方法:array.splice(index,howmany,item1,.....,itemX)
返回值: 如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组
splice()有多种用法:
1、删除: 可以删除任意数量的项,只需要指定2个参数:要删除的第一项的位置和要删除的项数。splice(0,2) // 会删除数组中前两项
2、插入: 可以向指定位置插入任意数量的项,只需提供3个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。splice(2,0,1,4) // 会从数组位置2的地方插入1和4
3、替换: 可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需提供3个参数:起始位置、要删除的项数和要插入的项。插入的项不必与删除的项数相等。splice(2,3,1,4) // 会从数组位置2删除两项,然后再从位置2的地方插入1和4
// 删除 var values = [4,8,0,3,7]; var remove = values.splice(3,1); console.log(values); // [ 4, 8, 0, 7 ] console.log(remove); // [ 3 ] 删除第四项 // 插入 remove = values.splice(2,0,1,2); console.log(values); // [ 4, 8, 1, 2, 0, 7 ] console.log(remove); // [] 从位置2开始插入两项,由于没有删除所有返回空函数 // 替换 remove = values.splice(2,2,6,9,10); console.log(values); // [ 4, 8, 6, 9, 10, 0, 7 ] console.log(remove); // [ 1, 2 ] 从位置2开始删除两项,同时插入三项
以上是javascript數組操作方法總結一覽(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!