陣列的基本概念:
1.什么是陣列
陣列是存盤一個或多個資料的容器,它是一組記憶體空間,通常用來批量處理資料,這組記憶體空間名字叫做陣列,
2.陣列的特點
陣列是個不挑食的家伙,對齊自身儲存的資料并沒有什么要求,無論是數量還是型別,通過陣列下標從來管理陣列元素,
3..length
陣列名.length表示陣列的長度,也是陣列當前存盤元素的個數,因為下標從0開始,所以陣列長度-1表示陣列最后一個元素的下標,
JavaScript中創建陣列有兩種方法
(一)使用 Array 建構式:
var arr1 = new Array(); //創建一個空陣列
var arr2 = new Array(20); // 創建一個包含20項的陣列
var arr3 = new Array(“lily”,“lucy”,“Tom”); // 創建一個包含3個字串的陣列
(二)使用陣列字面量表示法:
var arr4 = []; //創建一個空陣列
var arr5 = [20]; // 創建一個包含1項的陣列
var arr6 = [“lily”,“lucy”,“Tom”]; // 創建一個包含3個字串的陣列
陣列的存取操作
查找元素
indexOf()函式是最常用的存取函式之一,用來查找傳進來的引數在目標陣列中是否存在,包含則回傳索引,不包含則回傳-1,
lastIndexOf()函式回傳相同元素中最后一個元素的索引,
陣列的字串表示
join()和toString()都可以將陣列轉換為字串
由已有陣列創建新陣列
concat()方法可以合并多個陣列創建一個新陣列
splice()方法截取一個陣列的子集創建一個新陣列,splice()方法還有別的用途比如為一個陣列增加或洗掉元素,
可變函式
為陣列添加元素
push()可以接收任意數量的引數,把它們逐個添加到陣列末尾,并回傳修改后陣列的長度,unshift()將引數添加到原陣列開頭,并回傳陣列的長度 ,
var arr = ["Lily","lucy","Tom"];
var count = arr.push("Jack","Sean");
console.log(count); // 5
console.log(arr); // ["Lily", "lucy", "Tom", "Jack", "Sean"]
var count = arr.push("Jack","Sean");
console.log(arr); //["Jack", "Sean", "Lily", "lucy", "Tom"]
從陣列中洗掉元素
pop()方法可以洗掉陣列末尾的元素shift()方法可以洗掉陣列的第一個元素
var arr = ["Lily", "lucy", "Tom", "Jack", "Sean"];
var item = arr.pop();
console.log(item); // Sean
console.log(arr); // ["Lily", "lucy", "Tom", "Jack"]
var item = arr.shift();
console.log(item); // Lily
console.log(arr); // [ "lucy", "Tom", "Jack", "Sean"]
從陣列中間添加和洗掉元素
splice()可以方法為陣列添加/替換/洗掉元素
splice(起始索引,[[需要洗掉額元素個數(天假元素時該引數設為0)],要添加的陣列元素])
為陣列排序
reverse()方法可以將陣列中的元素進行翻轉
var arr = [1,3,5,7];
var arrCopy = arr.concat(9,[11,13]);
console.log(arrCopy); //[1, 3, 5, 7, 9, 11, 13]
console.log(arr); // [1, 3, 5, 7](原陣列未被修改)
sort()方法可以對陣列進行排序,但是依據的字串排序,如果要排列的元素是數字,sort()方法的排序結果就不能讓人滿意了,
但是可以在sort方法中傳遞一個對比函式!
var arr1 = ["a", "d", "c", "b"];
console.log(arr1.sort()); // ["a", "b", "c", "d"]
arr2 = [13, 24, 51, 3];
console.log(arr2.sort()); // [13, 24, 3, 51]
console.log(arr2); // [13, 24, 3, 51](元陣列被改變)
//解決辦法
function compare(num1, num2) {
return num1 - num2;
}
arr.sort(compare);
console.log(num) //[3,13,24,51]
迭代器方法
迭代器方法可以對陣列中的每個元素對應執行一個函式
不生成新陣列的迭代器方法
forEach():對陣列進行遍歷回圈,對陣列中的每一項運行給定函式,這個方法沒有回傳值,引數都是function型別,默認有傳參,引數分別為:遍歷的陣列內容;第對應的陣列索引,陣列本身,
var arr = [1, 2, 3];
arr.forEach(function(x, index, a){
console.log(x + '|' + index + '|' + (a === arr));
});
// 輸出為:
// 1|0|true
// 2|1|true
// 3|2|true
every(),該方法接收一個回傳值為布爾型別的函式,對陣列中的每個元素使用該函式,如果對于所有的元素,該函式均回傳true,則該方法回傳true,
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.every(function(x) {
return x < 10;
});
console.log(arr2); //true
var arr3 = arr.every(function(x) {
return x < 3;
});
console.log(arr3); // false
some()方法同every方法,只要有一個元素使得該函式回傳true該函式就回傳true,
reduce()方法接收一個函式,回傳一個值,該方法會從一個累加值開始,不斷對累加值和累加值和陣列中的后續元素呼叫該函式,直到陣列中的最后一個元素,最后回傳得到的累加值,
var nums = [1, 200, 31, 100]
var sum = nums.reduce((total, num)=>total+num)
console.log(sum)//332
生成新陣列的迭代器方法
map()和filter()兩個迭代器方法可以產生新陣列,
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.map(function(item){
return item*item;
});
console.log(arr2); //[1, 4, 9, 16, 25]
map()和forEach()有點像,對陣列中的每個元素使用某個函式,兩者區別是map函式回傳一個新的陣列,該陣列的元素是對原有元素應用某個函式得到的結果,
filter():“過濾”功能,陣列中的每一項運行給定函式,回傳滿足過濾條件組成的陣列,
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var arr2 = arr.filter(function(x, index) {
return index % 3 === 0 || x >= 8;
});
console.log(arr2); //[1, 4, 7, 8, 9, 10]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/335155.html
標籤:其他
