摘要:通常我們在項目過程中,難免會碰到各種對于數(shù)組的操作,或是是一些業(yè)務(wù)邏輯中,使用數(shù)組自帶方法,可以更加靈活的達到預(yù)期效果。
forEach通常我們在項目過程中,難免會碰到各種對于數(shù)組的操作,或是是一些業(yè)務(wù)邏輯中,使用數(shù)組自帶方法,可以更加靈活的達到預(yù)期效果。
這里對一些常用的數(shù)組方法進行總結(jié),順便記錄下使用中的小技巧,方便后面進行查詢
使用頻率最高的數(shù)組遍歷方法,效果與for循環(huán)相似,對數(shù)組中每一項進行遍歷,但時間效率要比for 循環(huán)低,從代碼簡潔上看,推薦使用forEach,如果在有條件的情況下進行遍歷時,推薦使用some 和 every 進行遍歷,會在滿足具體條件后停下,節(jié)約不必要的循環(huán)
[1,2,3].forEach(function(value, index, array) { cosole.log(value); }); // output // 1 // 2 // 3
對應(yīng)的在jQUery 中也實現(xiàn)了相同功能的遍歷方法 $.each(),對選中的數(shù)組或者對象進行遍歷,這里還有$().each() 在dom 操作中使用較多,表示對子元素集合進行遍歷。詳細解釋
$.each([1,2,3],function(){ console.log(this); } // output 1 2 3 // 對象進行遍歷 $.each({a:1,b:2,c:3},function(key,val){ console.log(obj[key]) }) // output 1 2 3map
對舊數(shù)組進行"映射",同時生成對應(yīng)的新數(shù)組,用法簡單,不改變原來的舊數(shù)組
var data = [1, 2, 3, 4]; var arrayOfSquares = data.map(function (item) { return item * item; });
最后返回的新的數(shù)組arrarOfSquares [1,4,9,16]
filter數(shù)組過濾方法,返回判斷條件為true 的數(shù)組項形成的數(shù)組,不改變原數(shù)組
var arrayFilter = [1,2,3,4,5].filter(function(item,index){ rerutn item>3; }) console.log(arrayFilter); // output [4,5]some
數(shù)組中的判斷方法,更邏輯運算中的或操作非常相似,|| ,只要數(shù)組中有任何一項滿足條件,就返回true,并且停止后面的遍歷.所以some方法在實際使用中也可以計較準確的找到指定數(shù)組項的同時,得到相應(yīng)的下標,更indexOf 方法有一些類似
[1,2,3,4,5].some(function(item,index){ console.log(index); return item<3; }) // output 0;
數(shù)組在遍歷的過程中,在第一個數(shù)組項處就停止循環(huán)了,并且整個數(shù)組返回 true
find找到符合條件的第一個數(shù)組元素,與filter 類,如果沒有找到任何一個就返回undefined
var inventory = [ {name: "apples", quantity: 2}, {name: "bananas", quantity: 0}, {name: "cherries", quantity: 5} ]; function findCherries(fruit) { return fruit.name === "cherries"; } console.log(inventory.find(findCherries)); // { name: "cherries", quantity: 5 }every
與some方法相反的效果,只有數(shù)組中所有的項全都滿足條件,就會返回true,與邏輯運算中的與,&& 操作類似
if([1,2,3,4,5].every(functionI(item,index){ console.log(index); return item<3; }) // output 0,1,2;
在帶條件的遍歷中,every 使用頻率比較高。既可以得到滿足條件的數(shù)組項,也可以判斷數(shù)組項中所有的值情況。
indexOf查找匹配的項, 返回匹配的索引值,如果沒有匹配,則返回-1,在搭配邏輯運算中非運算時 ~ ,有意想不到的效果
~ value 值, 當value = -1 的時候,得到的才是0; false 其他任何值的時候,等到的是非0, true
if(!~[1,2,3,4,5].indexOf(1)){ cnosole.log() }
對于上面這種情況,在數(shù)組中沒有滿足條件的數(shù)組項時,才會返回true,如果有滿足條件的數(shù)組項,就會返回false,對于處理一些特定的業(yè)務(wù)邏輯有非常奇妙的效果
lastIndexOf從后往前找,返回匹配項的索引值,如果沒有匹配的話,就返回 -1,
reduce遞歸遍歷
var sum = [1,2,3,4].reduce(function(previous,current,index,array){ return previous + current; }); console.log(sum); // output 10;
默認是從 第一個元素開始遍歷,
reduceRight從后往前進行遞歸遍歷
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/88783.html
摘要:的的區(qū)別和相同之處就是數(shù)組的遍歷循環(huán),回調(diào)支持三個參數(shù),第個是遍歷的數(shù)組內(nèi)容第個是對應(yīng)的數(shù)組索引,第個是數(shù)組本身他是沒有返回值得,不需要再下面,更進一步,除了接受一個必須的回調(diào)函數(shù)參數(shù),還可以接受一個可選的上下文參數(shù)改變回調(diào)函數(shù)里面 Array的forEach、map的區(qū)別和相同之處 forEach 1、 forEach就是數(shù)組的遍歷、循環(huán) ,回調(diào)支持三個參數(shù),第1個是遍歷的數(shù)組內(nèi)容;...
摘要:需要返回值,如果不給,默認返回使用場景假定有一個數(shù)值數(shù)組將數(shù)組中的值以雙倍的形式放到數(shù)組寫法方法使用場景假定有一個對象數(shù)組將數(shù)中對象某個屬性的值存儲到數(shù)組中三從數(shù)組中找出所有符合指定條件的元素檢測數(shù)值元素,并返回符合條件所有元素的數(shù)組。 showImg(https://segmentfault.com/img/remote/1460000016810336?w=1149&h=524);...
摘要:需要返回值,如果不給,默認返回使用場景假定有一個數(shù)值數(shù)組將數(shù)組中的值以雙倍的形式放到數(shù)組寫法方法使用場景假定有一個對象數(shù)組將數(shù)中對象某個屬性的值存儲到數(shù)組中三從數(shù)組中找出所有符合指定條件的元素檢測數(shù)值元素,并返回符合條件所有元素的數(shù)組。 showImg(https://segmentfault.com/img/remote/1460000016810336?w=1149&h=524);...
摘要:需要返回值,如果不給,默認返回使用場景假定有一個數(shù)值數(shù)組將數(shù)組中的值以雙倍的形式放到數(shù)組寫法方法使用場景假定有一個對象數(shù)組將數(shù)中對象某個屬性的值存儲到數(shù)組中三從數(shù)組中找出所有符合指定條件的元素檢測數(shù)值元素,并返回符合條件所有元素的數(shù)組。 showImg(https://segmentfault.com/img/remote/1460000016810336?w=1149&h=524);...
閱讀 2191·2023-04-25 15:24
閱讀 1654·2019-08-30 12:55
閱讀 1669·2019-08-29 15:27
閱讀 550·2019-08-26 17:04
閱讀 2493·2019-08-26 10:59
閱讀 1865·2019-08-26 10:44
閱讀 2260·2019-08-22 16:15
閱讀 2668·2019-08-22 15:36