最近搜尋資料時候發現了幾張js知識導圖,閑來無事就當溫習了一下
一、創建方法
這幾個使用的是Array構造函數:
空數組: var obj = new Array();
指定長度的數組:var obj = new Array(20);
指定元素的數組:var obj = new Array("red","blue","black");
另一種是使用數組字面量表示法:
三個字符串的數組:var obj = ["red","blue","green"];
空數組:var name = [];
二、基本操作
存取數組元素:
1)、單維數組:數組名[下標所索引] =》 obj[2]
;
2)、多維數組:數組名[外層數組下標][內層數組下標] =》obj[2][3]
增加數組:使用“【】”運算符指定一個新下標 =》 obj[3] = "yellow"
刪除數組:delete數組名[下標] =》 delete obj[3]
;(刪除之后原來元素會變成undefined)
遍歷數組:for(var 數組元素變量in數組)
三、數組屬性
引用數組對象的構造函數:constructor
數組的長度:length
通過增加屬性和方法擴展數組定義:prototype
四、方法
1)、添加
push():在數組末尾添加數組 =》 arr.push("yellow","pupple")
unshift():在數組頭部添加元素 =》 arr.unshift("green")
concat():合并兩個數組 =》 arr1.concat(arr2)
2)、刪除
pop():刪除并返回數組的最后一個元素 =》 arr.pop()
shift():刪除并返回數組的第一個元素 => arr.shift()
3)、子數組
splice(): 注意:此方法會直接修改數組本身!
PS:該方法可接受三個參數:
index(必需。整數,規定添加/刪除項目的位置,使用負數可從數組結尾處規定位置。)
howmany(必需。要刪除的項目數量。如果設置為 0,則不會刪除項目。)
item1, ..., itemX( 可選。向數組添加的新項目)
刪除任意數量的項:(要刪除的起始下標,要刪除的項數)=》arr.splice(1,2)
表從第一個開始,刪除兩個元素,包括第一個
在指定位置插入指定項:(起始下標,0[不刪除任何元素],要插入的項) =》arr.splice(2,0,"yellow","red")
表示在索引為2的地方插入后面兩個元素
替換任意數量的項:(起始下標,要刪除的項數,要插入的項)=》arr.splice(0,2,"6")
表示從索引為0的開始,選取兩個元素,替換成后面的元素
slice(): 注意:此方法不會修改數組本身!
從已有數組中選取部分元素構成新數組
PS:該方法可接受兩個參數:
start(必需。規定從何處開始選取。如果是負數,那么它規定從數組尾部開始算起的位置。也就是說,-1 指最后一個元素,-2 指倒數第二個元素,以此類推。)
end(可選。規定從何處結束選取。該參數是數組片斷結束處的數組下標。如果沒有指定該參數,那么切分的數組包含從start到數組結束的所有元素。如果這個參數是負數,那么它規定的是從數組尾部開始算起的元素。)
=》arr.slice(0,2)
表示從索引0開始,取兩個元素,注意包含第0個元素但不包含第2個元素
4)、數組排序
reverse()
顛倒數組元素的順序=》arr.reverse()
sort()
排序數組,默認的話,將按字母順序對數組中的元素進行排序,說得更精確點,是按照字符編碼的順序進行排序。要實現這一點,首先應把數組的元素都轉換成字符串(如有必要),以便進行比較。
比較數字的話如下:
<script type="text/javascript">
function sortNumber(a,b)
{
return a - b
}
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
document.write(arr + "<br />")
document.write(arr.sort(sortNumber))
</script>
5)、數組轉換
toString() 轉換為字符串并返回
toLocaleString轉換為本地格式字符串并返回
join()用指定分隔符分割數組并轉換為字符串
6)、位置方法
indexOf && lastIndexOf
一個從數組的起始位置開始查找,一個從數組的結束位置開始查找
接受兩個參數:
- 要查找的項
- 表示查找起點的索引位置
=》[2,3,4,5].indexOf(2)
如果查找得到則返回該元素的索引,找不到返回-1
7)、迭代方法
every
該方法用于檢測數組所有元素是否都符合條件(通過函數提供)
- 如果數組中檢測到有一個元素不滿足,則整個表達式都返回false,并且剩余的元素不會檢測
- 如果所有元素都滿足條件,則返回true
例子:
var ages = [32,33,16,40]
function checkAdult(age){
return age >= 18;
}
ages.every(checkAdult) //false
filter
對數組中的每個元素都執行一次指定的函數(callback),并且創建一個新的數組,該數組元素是所有回調函數執行時返回值為 true 的原數組元素。
//過濾掉小于 10 的數組元素:
//代碼:
function isBigEnough(element, index, array) {
return (element >= 10);
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// 12, 130, 44
//結果:[12, 5, 8, 130, 44].filter(isBigEnough) : 12, 130, 44
foreach
遍歷
//打印數組內容:
function printElt(element, index, array) {
document.writeln("[" + index + "] is " + element + "<br />");
}
[2, 5, 9].forEach(printElt);
// Prints:
// [0] is 2
// [1] is 5
// [2] is 9
//結果:
//[0] is 2
//[1] is 5
//[2] is 9
map
返回每次函數調用的結果數組
//將所有的數組元素轉換為大寫:
var strings = ["hello", "Array", "WORLD"];
function makeUpperCase(v)
{
return v.toUpperCase();
}
var uppers = strings.map(makeUpperCase);
// uppers is now ["HELLO", "ARRAY", "WORLD"]
// strings is unchanged
//結果:["hello", "Array", "WORLD"].map(makeUpperCase) : HELLO, ARRAY, WORLD
some
有一項返回true,則返回true
//檢查是否有數組元素大于等于10:
function isBigEnough(element, index, array) {
return (element >= 10);
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed is false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed is true
//結果:
//[2, 5, 8, 1, 4].some(isBigEnough) : false
//[12, 5, 8, 1, 4].some(isBigEnough) : true
8)、縮小方法
reduce 從數組起始位開始遍歷
reduceRight 從數組末尾開始遍歷
常見場景疊加
var sum = [0, 1, 2, 3].reduce(function(acc, val) {
return acc + val;
}, 0);
// sum is 6