JS數組的方法眾多,平時在使用的時候,容易忘記某些不常用的數組方法,而且時長把兩個差不多的方法搞混。而且ES6在ES5的基礎上又新增了一些方法,為了方便記憶,就寫篇博客方便記憶,沒事的時候拿出來看看。 數組方法: 1.push() 用法:在數組的最後一位添加數據,同時返回插入後的數組長度。 var ...
JS數組的方法眾多,平時在使用的時候,容易忘記某些不常用的數組方法,而且時長把兩個差不多的方法搞混。而且ES6在ES5的基礎上又新增了一些方法,為了方便記憶,就寫篇博客方便記憶,沒事的時候拿出來看看。
數組方法:
方法 | 用法 | 是否改變原有數組 |
push | 在最後一位新增一個或多個數據,返回數組的長度 | y |
pop | 刪除最後一位,並返回刪除的數據 | y |
unshift | 在第一位新增一個或多個數據,返回數組的長度 | y |
shift | 刪除第一位,並返回刪除的數據 | y |
join | 使用分隔符,將數組轉為字元串並返回 | n |
toString | 直接轉為字元串,並返回 | n |
slice | 截取指定位置的數組,並返回截取的數組。 | n |
spclice | 刪除指定位置項,並替換,返回刪除的數據 | y |
sort | 排序(字元規則),返回結果 | y |
reverse | 反轉數組 | y |
valueOf | 返回對象數組的原始值 | n |
indexOf | 查詢並返回數組的索引 | n |
lastIndexOf | 從尾部開始查詢並返回數據的索引 | n |
forEach | 參數為回調函數,會遍曆數組所有的項,回調函數接受三個參數,分別為value,index,self。無返回值 | n |
map | 同forEach,同時回電函數返回布爾值,組成新數組由map返回 | n |
filter | 同forEach,同時回調函數返回布爾值,為true的數據組成新數組由filter返回 | n |
every | 同forEach,同時回調函數返回布爾值,全部為true,由every返回true | n |
some | 同forEach,同時回調函數返回布爾值,只要由一個為true,由some返回true | n |
reduce | 歸併,同forEach,迭代數組的所有項,並構建一個最終值,由reduce返回 | n |
reduceRight | 反向歸併,同forEach,迭代數組的所有項,並構建一個最終值,由reduceRight返回 | n |
1.push()
用法:在數組的最後一位添加數據,同時返回插入後的數組長度。
var arr = [9,2,3,4,5];var a = arr.push(8); // 返回數組長度 console.log(a); console.log(arr); 結果為: 6 9 2 3 4 5 8 2.pop 用法:刪除最後一位,並返回刪除的數據 var arr = [9,2,3,4,5]; var a1 = arr.pop(); // 返回數組最後一個數 console.log(a1) console.log(arr) 結果為: 5 9 2 3 4 3.unshift 用法:在第一位新增數據,返回操作後的數組長度 var arr = [9,2,3,4,5]; var c = arr.unshift(3); // 返回數組的長度 console.log(c) console.log(arr); 結果為:6 6 9 2 3 4 5 4.shift 用法:刪除第一位,並返回刪除的數據 var arr = [9,2,3,4,5]; var b = arr.shift(); // 返回數組的第一個數 console.log(b); console.log(arr) 5.join 用法:使用分隔符,將數組轉為字元串並返回 var arr = [9,2,3,4,5]; var str = arr.join( " ," ); console.log(str); console.log(arr); 結果:9,2,3,4,5 9 2 3 4 5 6.toString 用法: var arr = [9,2,3,4,5]; document.write(arr.toString()); 結果為:9,2,3,4,5 7.slice var arr = [9,2,3,4,5]; 8.splice 用法:刪除指定位置,並替換,返回刪除的數據 var arr = [9,2,3,4,5]; var d = arr.splice(2,2,10,24); // splice() 方法返回一個包含已刪除項的數組: console.log(d); console.log(arr); 結果為:3,4 9,2,10,24,5 9.sort 用法:對數組中的元素進行排序,預設是升序 var arr = [9,2,3,4,5]; console.log(arr.sort()); console.log(arr); 結果為 [2,3,4,5,9 ] [2,3,4,5,9 ] 但是在排序前,會先調用數組的toString方法,將每個元素都轉成字元之後,再進行排序,此時會按照字元串的排序,逐位比較,進行排序。 var arr = [91,23,43,54,115]; console.log(arr.sort()); console.log(arr); 結果為:[115,23,43,54,91] [115,23,43,54,91] 如果需要按照數值排序,需要傳參. var arr = [91,23,43,54,115]; console.log(arr.sort(fn)); console.log(arr); function fn(a,b){ return a-b } 結果為:[ 23,43,54,91,115 ] [ 23,43,54,91,115 ] 10.reverse 用法:反轉數組 var arr = [9,2,3,4,5]; console.log(arr.reverse()); 結果為:[5,4,3,2,9] 11.valueOf 用法:返回數組對象的原始值 valueOf() 方法通常由 JavaScript 在後臺自動調用,並不顯式地出現在代碼中。 12.indexOf 用法:查詢並返回數據的索引 var arr = [9,2,3,4,5]; console.log(arr.indexOf(4)); 結果為:3 13.lastindexOf 用法:反向查詢並返回數據的索引 var arr = [9,2,3,4,5]; console.log(arr.lastIndextOf(3)); 結果為:2 14.forEach 用法:參數為回調函數,會遍曆數組所有的項,回調函數接受三個參數,分別為value,index,self;forEach沒有返回值 var arr = [9,2,3,4,5]; var a= arr.forEach(function(value,index,self){ console.log(value +“,”+ index+“,” + self); }) 結果為:9,0, 9,2,3,4,5 2,1, 9,2,3,4,5 3,2, 9,2,3,4,5 4,3, 9,2,3,4,5 5,4, 9,2,3,4,5 15.map 用法:同forEach,同forEach,同時回調函數返回數據,組成新數組由map返回 var arr = [9,2,3,4,5]; var a = arr.map(function( value,index,self ){ return 2 + value; }) console.log(a) 結果為: 11 4 5 6 7 16.filter 用法:同forEach,同時回調函數返回布爾值,為true的數據組成新數組由filter返回 var arr = [9,2,3,4,5]; var a = arr.filter(function(value,index,0){ return value>4; }) console.log(a); 結果為:[ 9,5 ] 17.some 用法:同forEach(),判斷數組中是否存在滿足條件的項,只要有一項滿足條件,就會返回true。 var arr = [9,2,3,4,5]; var a = arr.some(function(value,index,self){ return value>4 }) console.log(a) 結果為:[9,2,3,4,5] 18.every 用法:同forEach(),判斷數組中是否存在滿足條件的項,只有所有項滿足條件,才會返回true。 var arr = [9,2,3,4,5]; var a = arr.some(function(value,index,self){ return value>4 }) console.log(a) 結果為:[] 19.reduce 用法: 從數組的第一項開始,逐個遍歷到最後,迭代數組的所有項,然後構建一個最終返回的值。接受四個參數,分別為 total, currentValue, currentIndex, arr。reduce() 對於空數組是不會執行回調函數的。
var numbers = [15.5, 2.3, 1.1, 4.7]; function getSum(total, num) { return total + Math.round(num); } function myFunction(item) { document.getElementById("demo").innerHTML = numbers.reduce(getSum, 0); } 結果為:24 20.reduceRight 用法:同reduce。但索引方向與reduce相反。 var numbers = [2, 45, 30, 100]; function getSum(total, num) { return total - num; } function myFunction(item) { document.getElementById("demo").innerHTML = numbers.reduceRight(getSum); } 結果為:23