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