摘要:首次調(diào)用回調(diào)函數(shù)時(shí),和可以是兩個(gè)值之一。否則返回張三男王小毛男李四男李四對于數(shù)組中的每個(gè)元素,方法都會調(diào)用一次回調(diào)函數(shù)采用升序索引順序,直到有元素返回。
整理了一下數(shù)組遍歷的方法
1、for循環(huán)let arr = [1,2,3,4] for(let j = 0,len=arr.length; j < len; j++) { console.log(arr[j]); }2、forEach循環(huán)
//1 沒有返回值 arr.forEach((item,index,array)=>{ console.log(index+":"+arr[index]); }) //參數(shù):value數(shù)組中的當(dāng)前項(xiàng), index當(dāng)前項(xiàng)的索引, array原始數(shù)組; //數(shù)組中有幾項(xiàng),那么傳遞進(jìn)去的匿名回調(diào)函數(shù)就需要執(zhí)行幾次;3、map循環(huán)
map的回調(diào)函數(shù)中支持return返回值;
并不影響原來的數(shù)組,只是相當(dāng)于把原數(shù)組克隆一份,把克隆的這一份的數(shù)組中的對應(yīng)項(xiàng)改變了;
var ary = [12,23,24,42,1]; var res = ary.map(function (item,index,ary ) { return item*10; }) console.log(res);//-->[120,230,240,420,10]; 原數(shù)組拷貝了一份,并進(jìn)行了修改 console.log(ary);//-->[12,23,24,42,1]; 原數(shù)組并未發(fā)生變化4、for Of 遍歷
可以調(diào)用break、continue和return語句
var myArray= [12,23,24,42,1]; for (var value of myArray) { console.log(value); }5、filter遍歷
不會改變原始數(shù)組,返回新數(shù)組
var arr = [ { id: 1, value: 2 }, { id: 2, value: 4 }, { id: 2, value: 7 }, ] let newArr = arr.filter(item => item.value>2); console.log(newArr ,arr )6、every遍歷
every()是對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)對每一項(xiàng)返回true,則返回true。如果返回false,就退出遍歷
var arr = [ 1, 2, 3, 4, 5, 6 ]; if(arr.every( function( item, index, array ){ return item > 3; })){ console.log("滿足條件,每一個(gè)都大于3" ); }else{ console.log("不滿足條件,不是每一個(gè)都大于3" ); }7、some遍歷
some()是對數(shù)組中每一項(xiàng)運(yùn)行指定函數(shù),如果該函數(shù)對任一項(xiàng)滿足條件,則返回true,就退出遍歷;否則返回false。
var arr = [ 1, 2, 3, 4, 5, 6 ]; if(arr.some( function( item, index, array ){ return item > 3; })){ console.log(""); }else{ console.log("不滿足條件,沒有大于3的" ); }8、reduce
reduce 為數(shù)組中的每一個(gè)元素依次執(zhí)行回調(diào)函數(shù),不包括數(shù)組中被刪除或從未被賦值的元素,接受四個(gè)參數(shù):初始值(或者上一次回調(diào)函數(shù)的返回值),當(dāng)前元素值,當(dāng)前索引,調(diào)用 reduce 的數(shù)組。
var total = [0,1,2,3,4].reduce((a, b)=>a + b); //10 console.log(total)9、reduceRight
reduceRight()方法的功能和reduce()功能是一樣的,不同的是reduceRight()從數(shù)組的末尾向前將數(shù)組中的數(shù)組項(xiàng)做累加。
reduceRight()首次調(diào)用回調(diào)函數(shù)callbackfn時(shí),prevValue 和 curValue 可以是兩個(gè)值之一。如果調(diào)用 reduceRight() 時(shí)提供了 initialValue 參數(shù),則 prevValue 等于 initialValue,curValue 等于數(shù)組中的最后一個(gè)值。如果沒有提供 initialValue 參數(shù),則 prevValue 等于數(shù)組最后一個(gè)值, curValue 等于數(shù)組中倒數(shù)第二個(gè)值。
var arr = [0,1,2,3,4]; arr.reduceRight(function (preValue,curValue,index,array) { console.log(preValue ,curValue) return preValue + curValue; }); // 1010、find
find()方法返回?cái)?shù)組中符合測試函數(shù)條件的第一個(gè)元素。否則返回undefined
let name= [ { name: "張三", gender: "男", age: 20 }, { name: "王小毛", gender: "男", age: 20 }, { name: "李四", gender: "男", age: 20 } ]; function getStu(element){ return element.name == "李四" } name.find(getStu)11、findIndex
對于數(shù)組中的每個(gè)元素,findIndex 方法都會調(diào)用一次回調(diào)函數(shù)(采用升序索引順序),直到有元素返回 true。只要有一個(gè)元素返回 true,findIndex 立即返回該返回 true 的元素的索引值。如果數(shù)組中沒有任何元素返回 true,則 findIndex 返回 -1。
findIndex 不會改變數(shù)組對象。
[1,2,3].findIndex(function(x) { x == 2; }); [1,2,3].findIndex(x => x == 4); [1,2,3].findIndex(x => x == 3);12、ES6 新方法keys,values,entries
ES6 提供三個(gè)新的方法 —— entries(),keys()和values() —— 用于遍歷數(shù)組。它們都返回一個(gè)遍歷器對象,可以用for...of循環(huán)進(jìn)行遍歷,唯一的區(qū)別是keys()是對鍵名的遍歷、values()是對鍵值的遍歷,entries()是對鍵值對的遍歷
for (let index of ["a", "b"].keys()) { console.log(index); } // 0 // 1 for (let elem of ["a", "b"].values()) { console.log(elem); } // "a" // "b" for (let [index, elem] of ["a", "b"].entries()) { console.log(index, elem); } // 0 "a" // 1 "b"
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/105724.html
摘要:判斷是深拷貝對象還是數(shù)組如果要拷貝的對象的屬性依然是個(gè)復(fù)合類型,遞歸運(yùn)用遞歸,當(dāng)要拷貝的對象或者數(shù)組的屬性依然是個(gè)對象或者數(shù)組時(shí),遞歸調(diào)用。遍歷對象聊完了深拷貝和淺拷貝,接下來說一下遍歷。 在js這門語言中,數(shù)據(jù)存放在堆中,而數(shù)據(jù)的引用的存放在棧中。 淺拷貝 我們說的淺拷貝,指的是,引用地址的拷貝,棧中兩塊不同的引用地址都指向了堆中同樣一塊區(qū)域。所以,我們通過一個(gè)地址修改了堆中的數(shù)據(jù),...
摘要:循環(huán)方法方法不改變原數(shù)組方法會給原數(shù)組中的每個(gè)元素都按順序調(diào)用一次函數(shù)。篩選出過濾出數(shù)組中符合條件的項(xiàng)組成新數(shù)組代碼方法方法為數(shù)組中的每個(gè)元素執(zhí)行一次函數(shù),直到它找到一個(gè)使返回表示可轉(zhuǎn)換為布爾值的值的元素。 showImg(https://segmentfault.com/img/bV2QTD?w=1600&h=500); 前言 JavaScript 發(fā)展至今已經(jīng)發(fā)展出多種數(shù)組的循環(huán)遍...
摘要:如圖遍歷數(shù)組遍歷數(shù)組元素并以某種方式處理每個(gè)元素是一個(gè)常見的操作。如圖不過,里的功能比較強(qiáng)大,可以遍歷而且返回值是的則被省略掉總結(jié)遍歷對象,遍歷出來的是鍵名,而不是鍵值,參數(shù)必須是對象。 可能是由于職業(yè)的關(guān)系,下班之后完全不想Open PC,但很多知識點(diǎn)有必要自己做個(gè)小小總結(jié)。本人之前對原生Array和Object完全沒概念。 遍歷對象的方法: Object.keys(Object)...
摘要:語法參數(shù)當(dāng)前遍歷項(xiàng)。遍歷的范圍在第一次調(diào)用前就會確定。已刪除的項(xiàng)不會被遍歷到。的是由提出的,目的是作為遍歷所有數(shù)據(jù)結(jié)構(gòu)的統(tǒng)一方法。不僅可以遍歷數(shù)組,還可以遍歷結(jié)構(gòu),某些類似數(shù)組的對象如對象對象,對象,以及字符串。 即使是最簡單的循環(huán),其中也深藏學(xué)問 ECMAScript5(es5)有三種for循環(huán) 簡單for for in forEach ECMAScript6(es6)新增 fo...
摘要:數(shù)組語法功能遍歷數(shù)組,返回回調(diào)返回值組成的新數(shù)組,不改變原數(shù)組,不會對空數(shù)組進(jìn)行檢測語法功能無法,可以用中來停止,不改變原數(shù)組語法功能過濾,返回過濾后的數(shù)組,不改變原數(shù)組,不會對空數(shù)組進(jìn)行檢測語法功能有一項(xiàng)返回,則整體為,不改變原數(shù)組語法 數(shù)組 (array) ES5 * map 語法:[].map(function(item, index, array) {return xxx})功...
閱讀 834·2023-04-25 19:40
閱讀 3492·2023-04-25 17:41
閱讀 3006·2021-11-11 11:01
閱讀 2622·2019-08-30 15:55
閱讀 3231·2019-08-30 15:44
閱讀 1361·2019-08-29 14:07
閱讀 485·2019-08-29 11:23
閱讀 1330·2019-08-27 10:54