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