建立數組數組
var fruits = ['Apple', 'Banana']; console.log(fruits.length);
經過索引訪問數組元素函數
var first = fruits[0]; // Apple
遍歷數組post
for(var i = fruits.length-1;i >=0 ; i--){ console.log(fruits[i]); } for(var i = 0;i < fruits.length; i++){ console.log(fruits[i]); } fruits.forEach(function (item, index, array) { console.log(item, index); });
添加元素到數組的末尾測試
var newLength = fruits.push('Orange'); // ["Apple", "Banana", "Orange"]
刪除數組末尾的元素ui
var last = fruits.pop(); // remove Orange (from the end) // ["Apple", "Banana"];
刪除數組最前面(頭部)的元素this
var first = fruits.shift(); // remove Apple from the front // ["Banana"];
添加元素到數組的頭部prototype
var newLength = fruits.unshift('Strawberry') // add to the front // ["Strawberry", "Banana"];
找出某個元素在數組中的索引code
indexOf 該方法用來檢索某項數組出現的位置,出現屢次的話只記錄第一次出現的位置對象
var index = fruits.indexOf('Banana'); // 1
經過索引刪除某個元素排序
var removedItem = fruits.splice(pos, 1); // this is how to remove an item // ["Strawberry", "Mango"]
從一個索引位置刪除多個元素
會改變原數組
var vegetables = ['Cabbage', 'Turnip', 'Radish', 'Carrot']; var pos = 1, n = 2; var removedItems = vegetables.splice(pos, n); console.log(vegetables); // ["Cabbage", "Carrot"] console.log(removedItems); // ["Turnip", "Radish"]
複製一個數組
從某個已有的數組返回選定的元素。可理解爲數組截取,可接受兩個參數,只填一個參數表示從該位置起截取至最後,填兩個參數表示要截取的頭和尾的位置
var shallowCopy = fruits.slice();
console.log(fruits['2'] == fruits['02']); // true fruits[5] = 'mango'; console.log(Object.keys(fruits)); // ['0', '1', '2', '5'] console.log(fruits.length); // 6
JavaScript 解釋器經過調用 toString 隱式轉換成字符串
Array.length 屬性會根據數組的內置方法調整改變
數組方法
Array.from() 從類數組對象或者可迭代對象中建立一個新的數組實例。
Array.isArray() 用來判斷某個變量是不是一個數組對象。
Array.of() 根據一組參數來建立新的數組實例,支持任意的參數數量和類型。
實例方法
全部數組實例都會從 Array.prototype 繼承屬性和方法。修改 Array 的原型會影響到全部的數組實例。
concat()
鏈接兩個或更多的數組,並返回結果
var arr = [ 1, 2, 3 ]; var arr2= arr.concat("4", "5", "6"); //["1", "2", "3", "4", "5", "6"];
join()
把數組的全部元素放入一個字符串並經過指定的分隔符進行分隔
arr.join("+"); //"1+2+3";
reverse()
反轉數組中元素的順序。
arr.reverse(); console.log(arr); // [3, 2, 1];
sort()
數組排序 按照字符串的方式來排序。
toString()
把數組轉換爲字符串,並返回結果
filter()
建立一個新的數組,新數組中的元素是經過檢查指定數組中符合條件的全部元素。
//過濾掉等於 2 的數組元素: function isBigEnough(element, index, array) { return (element == 2); } arr.filter(isBigEnough) //2
map()
返回一個新數組,數組中的元素爲原始數組元素調用函數處理後的值
//數組元素平方: function two(x) { return x*x; } console.log(arr.map(two))
some()
用於檢測數組中的元素是否知足指定條件,若是有一個元素知足條件,則表達式返回true, 剩餘的元素不會再執行檢測,若是沒有知足條件的元素,則返回false。
function whoBig(element, index, array) { return (element >= 100); } arr.some(whoBig) //false
every()
用於檢測數組全部元素是否都符合指定條件,若是數組中檢測到有一個元素不知足,則整個表達式返回false,且剩餘的元素不會再進行檢測。
function whoBig(element, index, array) { return (element >= 4); } arr.every(whoBig) //false
find()
返回傳入一個測試條件,符合條件的數組第一個元素,當數組中的元素在測試條件時返回true時, find() 返回符合條件的元素,以後的值不會再調用執行函數。若是沒有符合條件的元素返回 undefined
const pets = [ { type: 'Dog', name: 'Max'}, { type: 'Cat', name: 'Karl'}, { type: 'Dog', name: 'Tommy'}, ]; var pet = pets.find(pet => pet.type ==='Dog' && pet.name === 'Tommy'); console.log(pet); // { type: 'Dog', name: 'Tommy' }
reduce()
接收一個函數做爲累加器,數組中的每一個值(從左到右)開始縮減,最終計算爲一個值
var arr = [1,2,3]; var sum = arr.reduce(function(prev, cur, index, arr) { console.log(prev, cur, index); return prev + cur; }) console.log(arr, sum);
數組去重
function unique(arr) { var result = []; for (var i = arr.length - 1; i >= 0; i--) { if(result.indexOf(arr[i])==-1){ result.push(arr[i]); } } return result; } var arr = [1,2,3,4,5,2,2,2,'test','king','test']; console.log(unique(arr)); function unique1(arr){ var obj = {},result = []; for (var i = arr.length - 1; i >= 0; i--) { if(!obj[arr[i]]){ obj[arr[i]] = true; result.push(arr[i]); } } return result; } console.log(unique1(arr)); function unique2(arr){ arr.sort(); var result =[]; for (var i = arr.length - 1; i >= 0; i--) { if(arr[i]!=result[result.length-1]){ result.push(arr[i]); } } return result; } console.log(unique2(arr)); function unique3(a) { return Array.from(new Set(a)); }
感謝