JavaScript中,Array是最常用到的數據類型之一,屬於引用類型中的一種。由於數組類型實在太常用而我記性又不是很好,就寫一篇博文做個筆記。
數組特性:
var students = new Array(); // 創建一個空數組
var students = new Array(5); // 創建一個長度爲5的數組
var students = new Array('paper', 'crane'); // 創建一個長度爲2、初始值爲paper,crane的數組
var students = Array(5); // 創建一個長度爲5的數組,也可省略初始長度
var students = Array('paper', 'crane'); // 創建一個長度爲2、初始值爲paper,crane的數組
// 使用數組字面量創建數組
var students = []; // 創建空數組
var students = ['paper', 'crane']; // 創建一個長度爲2、初始值爲paper、crane的數組
並且使用方括號來訪問數組元素,而且,方括號裏面的索引值不會有溢出的危險,當索引值實際大於數組長度,數組會自動新增,並將超出的數組元素的值設爲undefined。同時,如果給一個超出數組範圍的元素賦值,也不會報錯,而是數組會擴展到相應的長度:
var arr = [0, 1, 2, 3];
alert(arr[0]); // 0,通過方括號加索引值訪問數組元素
alert(arr[5]); // undefined,索引值超出數組長度範圍
alert(arr.length); // 4
arr[5] = 6;
alert(arr[5]); // 6
alert(arr[4]); // undefined
alert(arr.length); // 6
至於檢測數組的方法點擊這裏查看
轉換方法
var colors = ['red', 'blue', 'green'];
alert(colors.toString()); // red,blue,green
alert(colors.toLocaleString()); // red,blue,green
alert(colors.valueOf()); // red,blue,green
alert(colors); // red,blue,green
alert(colors.join(',')); // red,blue,green
alert(colors.join('||')); // red||blue||green
alert(colors.join()); // red,blue,green
排序方法
function compare(param1, param2) {
// 若爲正值,則返回真,此時需要交換兩個數值的位置
return param1 - param2;
}
var arr = [0, 7, 3, 9, 2, 8];
arr.sort(compare);
alert(arr);
arr.reverse();
alert(arr);
棧方法
var arr = [0, 1];
arr.push(2, 3);
arr.push(5);
var temp = arr.push();
alert(temp); // 5;
alert(arr) // 0,1,2,3,5
temp = arr.pop();
alert(temp); // 5
alert(arr); // 0,1,2,3
隊列方法
var arr = [0, 1];
arr.unshift(-2, -1);
arr.unshift(-3);
var temp = arr.unshift();
alert(temp); // 5;
alert(arr); // -3,-2,-1,0,1
temp = arr.shift();
alert(temp); // -3
alert(arr); // -2,-1,0,1
操作方法
var colors = ['red', 'green', 'blue'];
var colors2 = colors.concat('yellow', ['black', 'brown']);
alert(colors); // red,green,blue
alert(colors2); // red,green,blue,yellow,black,brown
var colors3 = colors.slice(1);
var colors4 = colors.slice(1, 2);
alert(colors3); // green,blue
alert(colors4); // green
var removed = colors.splice(0, 1);
alert(colors); // green,blue
alert(removed); // red
removed = colors.splice(1, 0, 'yellow', 'orange');
alert(colors); // green,yellow,orange,blue
alert(removed); // 空數組
removed = colors.splice(1, 1, 'red', 'purple');
alert(colors); // green,red,purple,orange,blue
alert(removed); // yellow 此數組只包含一項
位置方法
var numbers = [1,2,3,4,5,4,3,2,1];
alert(numbers.indexOf(4)); // 3
alert(numbers.lastIndexOf(4)); // 5
alert(numbers.indexOf(4, 4)); // 5
alert(numbers.lastIndexOf(4, 4)); // 3
var person = {name: 'paper_crane'};
var people = [{name: 'paper_crane'}];
var morePeople = [person];
alert(people.indexOf(person)); // -1
alert(morePeople.indexOf(person)); // 0
迭代方法
var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
var everyResult = numbers.every(function(item, index, array) {
return (item > 2);
});
alert(everyResult); // false
var someResult = numbers.some(function(item, index, array) {
return (item > 2);
});
alert(someResult); // true
var mapArr = numbers.map(function(item, index, array) {
return index;
});
alert(mapArr); // 0,1,2,3,4,5,6,7,8
var filterArr = numbers.filter(function(item, index, array) {
if (item > 2) {
return item;
}
});
alert(filterArr); // 3,4,5,4,3
numbers.forEach(function(item, index, array) {
item += 1; // 對原元素沒有影響
array[index] += 1; // 數組中的每一元素加1
});
alert(numbers); // 2,3,4,5,6,5,4,3,2
歸併方法
var numbers = [1, 2, 3, 4, 5];
var sum1 = numbers.reduce(function(prev, cur, index, array) {
return prev + cur;
});
alert(sum1); // 15
var sum2 = numbers.reduceRight(function(prev, cur, index, array) {
return prev + cur;
});
alert(sum2);