1.數組的length屬性
在Array
對象當中,存在一個length
屬性,能夠用來查看數組的長度。
例如:
var arr = [10,20,30,40]; console.log(arr.length);// 4
通常情況下,我們可以通過將length
屬性值設置為0,來讓數組清空。
例如:
var arr = [10,20,30,40]; arr.length = 0; console.log(arr); // [] 數組被清空
用length的增刪改
增:直接選定,哪里沒有增哪里
刪:只能刪后面不能刪前面
改:選定哪個改哪個
查:選定哪個查哪個
2.數組當中其他的操作方法
首先來說下push()
方法。通過這個方法,我們能夠將一個或者多個元素添加到數組的末尾,並且返回數組的新長度。
// 創建一個數組 var arr1 = ['張三','李四'];
// 通過Push方法向數組中添加元素 arr1.push("王五");
// 檢查數組內容 console.log(arr1); // [ '張三', '李四', '王五' ]
// 嘗試添加多個內容 arr1.push("趙六","劉七");
// 打印數組元素 console.log(arr1);
// [ '張三', '李四', '王五', '趙六', '劉七' ]
// 創建一個新的數組 var arr2 = [1,2,3,4];
// 嘗試將arr2添加到arr1 arr1.push(arr2);
// 打印arr1; console.log(arr1);
// [ '張三', '李四', '王五', '趙六', '劉七', [ 1, 2, 3, 4 ] ]
// 向arr1中再次添加數據並且查看push方法的返回值 console.log(arr1.push('hello,world')); // 7
pop()
方法能夠從數組中刪除最后一個元素,並且返回該元素的值。此方法更改數組的長度。
var plants = ['broccoli', 'cauliflower', 'cabbage', 'kale', 'tomato'];
console.log(plants.pop());
// expected output: "tomato"
console.log(plants);
// expected output: Array ["broccoli", "cauliflower", "cabbage", "kale"]
plants.pop();
console.log(plants);
// expected output: Array ["broccoli", "cauliflower", "cabbage"]
上面我們演示了pop
方法刪除數組的最后一個元素,但是在使用pop
方法的時候,我們需要注意,該方法通過length
屬性來確定最后一個元素的位置,
如果不包含length屬性或者length屬性不能夠被轉換成一個數值,那么就會將length屬性設置為0,並且返回undefined。
同時,你在一個空數組上調用pop方法,也會返回undefined。
unshift()
方法能夠將一個或者多個元素添加到數組的開頭,並且返回數組的新長度。
var array1 = [1, 2, 3]; console.log(array1.unshift(4, 5)); // expected output: 5 console.log(array1); // expected output: Array [4, 5, 1, 2, 3]
shift()
方法從數組中刪除第一個元素,並返回該元素的值。此方法更改數組的長度。
var array1 = [1, 2, 3]; var firstElement = array1.shift(); console.log(array1); // expected output: Array [2, 3] console.log(firstElement); // expected output: 1
shift 方法移除索引為 0 的元素(即第一個元素),並返回被移除的元素,其他元素的索引值隨之減 1。如果 length 屬性的值為 0 (長度為 0),則返回 undefined。
shift 方法並不局限於數組:這個方法能夠通過 call 或 apply 方法作用於類似數組的對象上。但是對於沒有 length 屬性(從0開始的一系列連續的數字屬性的最后一個)的對象,調用該方法可能沒有任何意義。
toString() 把數組轉換為數組值(逗號分隔)的字符串 直接轉為字符串,並返回
join() 方法也可將所有數組元素結合為一個字符串。它的行為類似 toString(),但是您還可以規定分隔符
var fruits = ["Banana", "Orange","Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits.join(" * ");
Banana * Orange * Apple * Mango
concat() 方法通過合並(連接)現有數組來創建一個新數組:concat() 方法不會更改現有數組。它總是返回一個新數組。
concat() 方法可以使用任意數量的數組參數:var arr1 = ["Cecilie", "Lone"];
var arr2 = ["Emil", "Tobias", "Linus"];
var arr3 = ["Robin", "Morgan"];
var myChildren = arr1.concat(arr2, arr3); // 將arr1、arr2 與 arr3 連接在一起
concat() 方法也可以將值作為參數:var arr1 = ["Cecilie", "Lone"];
var myChildren = arr1.concat(["Emil", "Tobias", "Linus"]);
arr.splice(m,n,“”) -- 替換數組指定位置的值,不賦值則為刪除該位數值;
m代表索引值
n插入替換幾個(為0則代表插入)
“”代表替換或者插入的值 可以為多個
刪除指定位置,並替換,返回刪除的數據
arr.slice(m,n) -- 截取 從m到n的前一個 若其中值為一個則代表從m到最后;
arr.sort(函數) 默認按字符從小到大排序;(function(a,b){ return a-b或者b-a; })即可換為數值排序;
indexOf(value,start);
用於返回某個數組或者字符串中規定字符或者字符串的位置;
查詢並返回數據的索引
value為要查詢的數據;start為可選,表示開始查詢的位置,當start為負數時,從數組的尾部向前數;如果查詢不到value的存在,則方法返回-1
lastIndexOf() 反向查詢並返回數據的索引
3.ES5新增的數組方法
循環,遍歷數組
forEach(callback);
參數callback為回調函數,會遍歷數組所有的項,回調函數接受三個參數,分別為value,index,self;forEach沒有返回值
map(callback);
同forEach,同時回調函數返回數據,組成新數組由map返回;
filter(callback);
同forEach,同時回調函數返回布爾值,為true的數據組成新數組由filter返回
arr.every(callback)
判斷數組中每一項是否都滿足條件,只有所有項都滿足條件,才會返回true 。
arr.some(callback)
判斷數組中是否存在滿足條件的項,只要有一項滿足條件,就會返回true。
arr.reduce()
功能:從數組的第一項開始,逐個遍歷到最后,迭代數組的所有項,然后構建一個最終返回的值。
參數:reduce()接收一個或兩個參數:第一個是回調函數,表示在數組的每一項上調用的函數;第二個參數(可選的)作為歸並的初始值,被回調函數第一次執行時的第一個參數接收。
reduce(callback,initial);callback默認有四個參數,分別為prev,now,index,self。
callback返回的任何值都會作為下一次執行的第一個參數。
如果initial參數被省略,那么第一次迭代發生在數組的第二項上,因此callback的第一個參數是數組的第一項,第二個參數就是數組的第二項。
arr.reduceRight()
功能:(與reduce類似)從數組的最后一項開始,向前逐個遍歷到第一位,迭代數組的所有項,然后構建一個最終返回的值。
參數:同reduce。
demo:同reduce