屬性:
length 表示一個無符號 32-bit 整數,返回一個數組中的元素個數。
截短數組..截短至長度2 則: .length = 2
方法:
Array.from() 方法能夠將一個類數組對象或可遍歷對象轉換成真正的數組。
Array.isArray() 方法用來判斷某個值是否爲
Array。若是是,則返回 true,不然返回 false。
Array.of() 方法會將它的任意類型的多個參數放在一個數組裏並返回。
Array.of() 和 Array 構造函數不一樣的是:在處理數值類型的參數時,Array.of(42) 建立的數組只有一個元素,即 42, 但 Array(42) 建立了42個元素,每一個元素都是undefined。
示例
Array.of(1); // [1]
Array.of(1, 2, 3); // [1, 2, 3]
Array.of(undefined); // [undefined]
concat() 方法將傳入的數組或非數組值與原數組合並,組成一個新的數組並返回.
注意: 鏈接一個或多個數組(值)將不會改變本來的數組/值。進一步說,任何對新數組的操做都不會對原有的數組形成影響(僅當該元素不是對象的引用時),反之亦然。
示例:
兩個數組合併爲一個新數組 var newArray = array1.concat(array2)
三個數組合併爲一個新數組 var newArray = array1.concat(array2,array3)
將非數值合併到數組裏 var newArray = array1.concat(1)
copyWithin() 方法會淺拷貝數組的部分元素到同一數組的不一樣位置,且不改變數組的大小,返回該數組。
every() 方法測試數組的全部元素是否都經過了指定函數的測試。
語法
arr.every(callback[, thisArg])
參數
callback用來測試每一個元素的函數。
thisArg執行 callback 時使用的 this 值。
callback 被調用時傳入三個參數:元素值,元素的索引,原數組。
檢測全部數組元素的大小
下例檢測數組中的全部元素是否都大於 10。
function isBigEnough(element, index, array) {
return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true
fill() 方法,能夠將一個數組中指定區間的全部元素的值, 都替換成或者說填充成爲某個固定的值。
參數
value 用來填充數組元素的值。
start 可選,開始索引。
end 可選,結束索引。
具體要填充的元素區間是 [start, end) , 一個半開半閉區間.
fill 方法接受三個參數 value, start 以及 end. start 和 end 參數是可選的, 其默認值分別爲 0 和 this 對象的 length 屬性值.
若是 start 是個負數, 則開始索引會被自動計算成爲 length+start, 其中 length 是 this 對象的 length 屬性值. 若是 end 是個負數, 則結束索引會被自動計算成爲 length+end.
示例
[1, 2, 3].fill(4) // [4, 4, 4]
[1, 2, 3].fill(4, 1) // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2) // [1, 4, 3]
[1, 2, 3].fill(4, 1, 1) // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2) // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN) // [1, 2, 3]
Array(3).fill(4); // [4, 4, 4]
filter() 方法使用指定的函數測試全部元素,並建立一個包含全部經過測試的元素的新數組。filter 不會改變原數組。
參數
callback用來測試數組的每一個元素的函數。調用時使用參數 (element, index, array)。
返回true表示保留該元素(經過測試),false則不保留。
thisArg可選。執行 callback 時的用於 this 的值。
描述 : filter 爲數組中的每一個元素調用一次 callback 函數,並利用全部使得 callback 返回 true 或
等價於 true 的值 的元素建立一個新數組。callback 只會在已經賦值的索引上被調用,對於那些已經被刪除或者從未被賦值的索引不會被調用。那些沒有經過 callback 測試的元素會被跳過,不會被包含在新數組中。
callback 被調用時傳入三個參數:
- 元素的值
- 元素的索引
- 被遍歷的數組
例子:篩選排除掉全部的小值
下例使用 filter 建立了一個新數組,該數組的元素由原數組中值大於 10 的元素組成。
function isBigEnough(element) {
return element >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]
find() 方法就會返回那個元素的第一個值,若是沒有知足條件的元素,則返回
undefined。find方法不會改變數組。
語法
arr.find(callback[, thisArg])
參數 callback 同上
findIndex()方法用來查找數組中某指定元素的索引, 若是找不到指定的元素, 則返回 -1. (2015年的方法)
forEach() 方法對數組的每一個元素執行一次提供的函數(回調函數)。
語法
array.forEach(callback[, thisArg])
參數
callback函數爲每一個元素執行,接收三個參數:
currentValue(當前值) 數組中正在處理的當前元素。
index(索引) 數組中正在處理的當前元素的索引。
array 正在應用forEach()數組。。
thisArg可選
可選參數。當執行回調 函數時用做this的值(參考對象)。
描述
forEach 方法按升序爲數組中含有效值的每一項執行一次callback 函數,那些已刪除(使用delete方法等狀況)或者從未賦值的項將被跳過(但不包括那些值爲 undefined 的項)。
callback 函數會被依次傳入三個參數:
若是給forEach傳遞了thisArg 參數,它將做爲 callback 函數的執行上下文,相似執行以下函數callback.call(thisArg, element, index, array)。若是 thisArg 值爲 undefined 或 null,函數的 this 值取決於當前執行環境是否爲嚴格模式(嚴格模式下爲 undefined,非嚴格模式下爲全局對象)。
forEach 遍歷的範圍在第一次調用 callback 前就會肯定。調用forEach 後添加到數組中的項不會被 callback 訪問到。若是已經存在的值被改變,則傳遞給 callback 的值是 forEach 遍歷到他們那一刻的值。已刪除的項不會被遍歷到。
注意: 沒有辦法停止或者跳出 forEach 循環,除了拋出一個異常。若是你須要這樣,使用forEach()方法是錯誤的,你能夠用一個簡單的循環做爲替代。若是您正在測試一個數組裏的元素是否符合某條件,且須要返回一個布爾值,那麼可以使用
Array.every 或
Array.some。
forEach 爲數組中的元素執行一次 callback 函數,不像 every 和 some,它老是返回 undefined。
示例
打印出數組的內容
下面的代碼會爲每個數組元素輸出一行記錄:
function logArrayElements(element, index, array) {
console.log("a[" + index + "] = " + element);
}
[2, 5, 9].forEach(logArrayElements);
// logs:
// a[0] = 2
// a[1] = 5
// a[2] = 9
Array.ForEach is about 95% slower than for() in for each for Arrays in JavaScript.
So, don't use:
arr.forEach(function (item) {
someFn(item);
})
Use:
for (var i = 0, len = arr.length; i < len; i++) {
someFn(arr[i]);
}
includes() 方法用來判斷當前數組是否包含某指定的值,若是是,則返回 true,不然返回 false。
語法
var boolean = array.includes(searchElement[, fromIndex])
參數 : searchElement須要查找的元素值。
fromIndex可選參數。從該索引處開始查找 searchElement,默認爲 0。
示例
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true
indexOf()方法返回給定元素能找在數組中找到的第一個索引值,不然返回-1
join() 方法將數組中的全部元素鏈接成一個字符串。
參數 :separator可選,用於指定鏈接每一個數組元素的分隔符。分隔符會被轉成字符串類型;若是省略的話,默認爲一個逗號。若是 seprator 是一個空字符串,那麼數組中的全部元素將被直接鏈接。
var a = ['Wind', 'Rain', 'Fire'];
var myVar1 = a.join(); // myVar1的值變爲"Wind,Rain,Fire"
var myVar2 = a.join(', '); // myVar2的值變爲"Wind, Rain, Fire"
var myVar3 = a.join(' + '); // myVar3的值變爲"Wind + Rain + Fire"
var myVar4 = a.join(''); // myVar4的值變爲"WindRainFire"
keys() 方法返回一個數組索引的迭代器。2015
map() 方法返回一個由原數組中的每一個元素調用一個指定方法後的返回值組成的新數組。map 不修改調用它的原數組自己
語法: array.map(callback[, thisArg])
下面的代碼建立了一個新數組,值爲原數組中對應數字的平方根。
var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
/* roots的值爲[1, 2, 3], numbers的值仍爲[1, 4, 9] */
反轉字符串
var str = '12345';
Array.prototype.map.call(str, function(x) {
return x;
}).reverse().join('');
// Output: '54321'
// Bonus: use '===' to test if original string was a palindrome
pop() 方法刪除一個數組中的最後的一個元素,而且返回這個元素。
push() 方法添加一個或多個元素到數組的末尾,並返回數組新的長度(length 屬性值)。
reduce() 方法接收一個函數做爲累加器(accumulator),數組中的每一個值(從左到右)開始合併,最終爲一個值。
reduceRight() 方法接受一個函數做爲累加器(accumulator),讓每一個值(從右到左,亦即從尾到頭)縮減爲一個值。(與 reduce() 的執行方向相反)
reverse() 方法顛倒數組中元素的位置。第一個元素會成爲最後一個,最後一個會成爲第一個。
下例將會建立一個數組 myArray,其包含三個元素,而後顛倒該數組。
var myArray = ['one', 'two', 'three'];
myArray.reverse();
console.log(myArray) // ['three', 'two', 'one']
shift() 方法刪除數組的 第一個 元素,並返回這個元素。該方法會改變數組的長度。
slice() 方法會淺複製(shallow copy)數組的一部分到一個新的數組,並返回這個新數組。
參數 [ begin end) begin和end是索引...大於等於begin小於end的區域被裁減出來
some() 方法測試數組中的某些元素是否經過了指定函數的測試。
例子:測試數組元素的值
下面的例子檢測在數組中是否有元素大於 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
sort() 方法對數組的元素作原地的排序,並返回這個數組。 sort 排序多是不
穩定的。默認按照字符串的Unicode碼位點(code point)排序。
若是沒有指明 compareFunction ,那麼元素會按照轉換爲的字符串的諸個字符的Unicode位點進行排序。例如 "Banana" 會被排列到 "cherry" 以前。數字比大小時,9 出如今 80 以前,但這裏比較時數字會先被轉換爲字符串,因此 "80" 比 "9" 要靠前。
var fruit = ['cherries', 'apples', 'bananas'];
fruit.sort(); // ['apples', 'bananas', 'cherries']
var scores = [1, 10, 2, 21];
scores.sort(); // [1, 10, 2, 21]
// Watch out that 10 comes before 2,
// because '10' comes before '2' in Unicode code point order.
var things = ['word', 'Word', '1 Word', '2 Words'];
things.sort(); // ['1 Word', '2 Words', 'Word', 'word']
// In Unicode, numbers come before upper case letters,
// which come before lower case letters.
toLocaleString() 返回一個字符串表示數組中的元素。數組中的元素將使用各自的 toLocaleString 方法轉成字符串,這些字符串將使用一個特定語言環境的字符串(例如一個逗號 ",")隔開。
數組中的元素將會使用各自的 toLocaleString 方法:
例子:使用 toLocaleString
var number = 1337;
var date = new Date();
var myArr = [number, date, "foo"];
var str = myArr.toLocaleString();
console.log(str);
// 輸出 "1337,2015/2/27 下午8:29:04,foo"
// 假定運行在中文(zh-CN)環境,北京時區
toString() 返回一個字符串,表示指定的數組及其元素。
Array 對象覆蓋了
Object 的 toString 方法。對於數組對象,toString 方法返回一個字符串,該字符串由數組中的每一個元素的 toString() 返回值經調用 join() 方法鏈接(由逗號隔開)組成。例如,下面的代碼建立了一個數組,而後使用 toString 方法把該數組轉成一個字符串。
var monthNames = ['Jan', 'Feb', 'Mar', 'Apr'];
var myVar = monthNames.toString(); // assigns "Jan,Feb,Mar,Apr" to myVar.
unshift() 方法在數組的開頭添加一個或者多個元素,並返回數組新的 length 值。
values() 方法返回一個新的 Array Iterator 對象,該對象包含數組每一個索引的值。