語法:數組
var filteredArray = array.filter(callback[, thisObject]);
參數說明:函數
callback: 要對每一個數組元素執行的回調函數。
thisObject : 在執行回調函數時定義的this對象。測試
//過濾掉小於 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
功能說明:this
對數組中的每一個元素都執行一次指定的函數(callback),而且建立一個新的數組,該數組元素是全部回調函數執行時返回值爲 true 的原數組元素。它只對數組中的非空元素執行指定的函數,沒有賦值或者已經刪除的元素將被忽略,同時,新建立的數組也不會包含這些元素。spa
回調函數能夠有三個參數:當前元素,當前元素的索引和當前的數組對象。code
如參數 thisObject 被傳遞進來,它將被當作回調函數(callback)內部的 this 對象,若是沒有傳遞或者爲null,那麼將會使用全局對象。對象
filter 不會改變原有數組,記住:只有在回調函數執行前傳入的數組元素纔有效,在回調函數開始執行後才添加的元素將被忽略,而在回調函數開始執行到最後一個元素這一期間,數組元素被刪除或者被更改的,將以回調函數訪問到該元素的時間爲準,被刪除的元素將被忽略。blog
//將全部的數組元素轉換爲大寫: 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
對數組中的每一個元素都執行一次指定的函數(callback),直到此函數返回 true,若是發現這個元素,some 將返回 true,若是回調函數對每一個元素執行後都返回 false ,some 將返回 false。它只對數組中的非空元素執行指定的函數,沒有賦值或者已經刪除的元素將被忽略。索引
//檢查是否有數組元素大於等於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
對數組中的每一個元素都執行一次指定的函數(callback),直到此函數返回 false,若是發現這個元素,every 將返回 false,若是回調函數對每一個元素執行後都返回 true ,every 將返回 true。它只對數組中的非空元素執行指定的函數,沒有賦值或者已經刪除的元素將被忽略element
//測試是否全部數組元素都大於等於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 //結果: //[12, 5, 8, 130, 44].every(isBigEnough) 返回 : false //[12, 54, 18, 130, 44].every(isBigEnough) 返回 : true
//打印數組內容: 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
var index = array.lastIndexOf(searchElement[, fromIndex]);
參數說明
searchElement: 要搜索的元素
fromIndex : 開始搜索的位置,默認爲數組的長度(length),在這樣的狀況下,將搜索全部的數組元素。搜索是反方向進行的。
功能說明
比較 searchElement 和數組的每一個元素是否絕對一致(===),當有元素符合條件時,返回當前元素的索引。若是沒有發現,就直接返回 -1 。
//查找符合條件的元素: var array = [2, 5, 9, 2]; var index = array.lastIndexOf(2); // index is 3 index = array.lastIndexOf(7); // index is -1 index = array.lastIndexOf(2, 3); // index is 3 index = array.lastIndexOf(2, 2); // index is 0 index = array.lastIndexOf(2, -2); // index is 0 index = array.lastIndexOf(2, -1); // index is 3 //結果: //[2, 5, 9, 2].lastIndexOf(2) : 3 //[2, 5, 9, 2].lastIndexOf(7) : -1 //[2, 5, 9, 2].lastIndexOf(2, 3) : 3 //[2, 5, 9, 2].lastIndexOf(2, 2) : 0 //[2, 5, 9, 2].lastIndexOf(2, -2) : 0 //[2, 5, 9, 2].lastIndexOf(2, -1) : 3
功能與lastIndexOf()同樣,搜索是正向進行的
//查找符合條件的元素: var array = [2, 5, 9]; var index = array.indexOf(2); // index is 0 index = array.indexOf(7); // index is -1 //結果: //[2, 5, 9].indexOf(2) : 0 //[2, 5, 9].indexOf(7) : -1