摘要:首次調(diào)用回調(diào)函數(shù)時(shí),和可以是兩個(gè)值之一。否則返回張三男王小毛男李四男李四返回結(jié)果為李四男方法李四對(duì)于數(shù)組中的每個(gè)元素,方法都會(huì)調(diào)用一次回調(diào)函數(shù)采用升序索引順序,直到有元素返回。
數(shù)組遍歷方法 1.for循環(huán)
使用臨時(shí)變量,將長度緩存起來,避免重復(fù)獲取數(shù)組長度,當(dāng)數(shù)組較大時(shí)優(yōu)化效果才會(huì)比較明顯。
for(var j = 0,j < arr.length;j++) { //執(zhí)行代碼 }2.foreach循環(huán)
遍歷數(shù)組中的每一項(xiàng),沒有返回值,對(duì)原數(shù)組沒有影響,不支持IE
arr.forEach((item,index,array)=>{ //執(zhí)行代碼 }) //參數(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)
有返回值,可以return出來map的回調(diào)函數(shù)中支持return返回值;return的是啥,相當(dāng)于把數(shù)組中的這一項(xiàng)變?yōu)樯叮ú⒉挥绊懺瓉淼臄?shù)組,只是相當(dāng)于把原數(shù)組克隆一份,把克隆的這一份的數(shù)組中的對(duì)應(yīng)項(xiàng)改變了)
arr.map(function(value,index,array){ //do something return XXX }) 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.forof遍歷
可以正確響應(yīng)break、continue和return語句
for (var value of myArray) { console.log(value); }5.filter遍歷
不會(huì)改變?cè)紨?shù)組,返回新數(shù)組
var arr = [ { id: 1, text: "aa", done: true }, { id: 2, text: "bb", done: false } ] console.log(arr.filter(item => item.done)) 轉(zhuǎn)為ES5 arr.filter(function (item) { return item.done; }); var arr = [73,84,56, 22,100] var newArr = arr.filter(item => item>80) //得到新數(shù)組 [84, 100] console.log(newArr,arr)6.every遍歷
every()是對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)對(duì)每一項(xiàng)返回true,則返回true。
var arr = [ 1, 2, 3, 4, 5, 6 ]; console.log( arr.every( function( item, index, array ){ return item > 3; })); false7.some遍歷
some()是對(duì)數(shù)組中每一項(xiàng)運(yùn)行指定函數(shù),如果該函數(shù)對(duì)任一項(xiàng)返回true,則返回true。
var arr = [ 1, 2, 3, 4, 5, 6 ]; console.log( arr.some( function( item, index, array ){ return item > 3; })); true8.reduce
reduce() 方法接收一個(gè)函數(shù)作為累加器(accumulator),數(shù)組中的每個(gè)值(從左到右)開始縮減,最終為一個(gè)值。
var total = [0,1,2,3,4].reduce((a, b)=>a + b); //10
reduce接受一個(gè)函數(shù),函數(shù)有四個(gè)參數(shù),分別是:上一次的值,當(dāng)前值,當(dāng)前值的索引,數(shù)組
[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array){ return previousValue + currentValue; });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) { return preValue + curValue; }); // 1010.find
find()方法返回?cái)?shù)組中符合測試函數(shù)條件的第一個(gè)元素。否則返回undefined
var stu = [ { name: "張三", gender: "男", age: 20 }, { name: "王小毛", gender: "男", age: 20 }, { name: "李四", gender: "男", age: 20 } ] function getStu(element){ return element.name == "李四" } stu.find(getStu) //返回結(jié)果為 //{name: "李四", gender: "男", age: 20} ES6方法 stu.find((element) => (element.name == "李四"))11.findIndex
對(duì)于數(shù)組中的每個(gè)元素,findIndex 方法都會(huì)調(diào)用一次回調(diào)函數(shù)(采用升序索引順序),直到有元素返回 true。只要有一個(gè)元素返回 true,findIndex 立即返回該返回 true 的元素的索引值。如果數(shù)組中沒有任何元素返回 true,則 findIndex 返回 -1。
findIndex 不會(huì)改變數(shù)組對(duì)象。
[1,2,3].findIndex(function(x) { x == 2; }); // 返回索引值1 [1,2,3].findIndex(x => x == 4); // 返回索引值 -1.12.keys,values,entries
ES6 提供三個(gè)新的方法 —— entries(),keys()和values() —— 用于遍歷數(shù)組。它們都返回一個(gè)遍歷器對(duì)象,可以用for...of循環(huán)進(jìn)行遍歷,唯一的區(qū)別是keys()是對(duì)鍵名的遍歷、values()是對(duì)鍵值的遍歷,entries()是對(duì)鍵值對(duì)的遍歷
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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/106540.html
摘要:日常開發(fā)中我們難免需要對(duì)數(shù)組和對(duì)象進(jìn)行遍歷,今天抽空來總結(jié)下遍歷數(shù)組和對(duì)象常用的方法。使用遍歷對(duì)象注只能遍歷出自身可枚舉的屬性,而不能遍歷出原型鏈上面的屬性。 日常開發(fā)中我們難免需要對(duì)數(shù)組和對(duì)象進(jìn)行遍歷,今天抽空來總結(jié)下遍歷數(shù)組和對(duì)象常用的方法。 Javascript遍歷數(shù)組總結(jié) 我們定義一個(gè)數(shù)組 var arr = [2,4,6]; 1.使用for循環(huán)遍歷 var lengt...
摘要:主要用于枚舉對(duì)象數(shù)組遍歷效率最低的方法。當(dāng)前數(shù)組元素的值。傳遞給函數(shù)的初始值注意對(duì)于空數(shù)組是不會(huì)執(zhí)行回調(diào)函數(shù)的。 前言 PS: 2018/04/26 優(yōu)化一下排版,重新梳理一下方法,補(bǔ)充一些信息,刪除JQuery庫用法,只講解Javascript自帶的, for in 語句用于遍歷數(shù)組或者對(duì)象的屬性(對(duì)數(shù)組或者對(duì)象的屬性進(jìn)行循環(huán)操作)。主要用于枚舉對(duì)象, 數(shù)組遍歷效率最低的方法。 va...
摘要:如果省略,則將用作值返回值如果函數(shù)為所有數(shù)組元素返回,則為否則為。不為數(shù)組中缺少的元素調(diào)用該回調(diào)函數(shù)。數(shù)組元素的數(shù)字索引。方法會(huì)為中的每個(gè)元素調(diào)用函數(shù),直到返回,或直到到達(dá)數(shù)組的結(jié)尾。 這一部分應(yīng)該放在《JavaScript處理數(shù)組函數(shù)總結(jié)》里面的,但是。。。。。。沒有但是。 1. for for循環(huán)最常用的地方是利用索引來遍歷數(shù)組: var arr = [Microsoft,Goog...
摘要:數(shù)組原型提供的方法非常之多,主要分為三種直接修改原數(shù)組原數(shù)組不變,返回新數(shù)組數(shù)組遍歷方法直接修改原數(shù)組的刪除一個(gè)數(shù)組中的最后的一個(gè)元素,并且返回這個(gè)元素添加一個(gè)或者多個(gè)元素到數(shù)組末尾,并且返回?cái)?shù)組新的長度刪除數(shù)組的第一個(gè)元素,并返回這個(gè)元素 Javascript數(shù)組原型提供的方法非常之多,主要分為三種: 直接修改原數(shù)組 原數(shù)組不變,返回新數(shù)組 數(shù)組遍歷方法 直接修改原數(shù)組的API ...
摘要:總之,是用來循環(huán)帶有字符串的對(duì)象的方法。循環(huán)里引入了一種新的循環(huán)方法,它就是循環(huán),它既比傳統(tǒng)的循環(huán)簡潔,同時(shí)彌補(bǔ)了和循環(huán)的短板。 forEach 循環(huán) JavaScript誕生已經(jīng)有20多年了,我們一直使用的用來循環(huán)一個(gè)數(shù)組的方法是這樣的: for (var index = 0; index < myArray.length; index++) { console.log(myAr...
閱讀 1572·2021-11-24 09:39
閱讀 1062·2021-11-22 15:11
閱讀 2201·2021-11-19 11:35
閱讀 1639·2021-09-13 10:37
閱讀 2472·2021-09-03 10:47
閱讀 2159·2021-08-30 09:47
閱讀 1642·2021-08-20 09:39
閱讀 2919·2019-08-30 14:13