摘要:遍歷只遍歷對象自身的和繼承的可枚舉的屬性可枚舉的是繼承來的可枚舉屬性在遍歷數組時不建議使用,因為遍歷不能保證遍歷順序,并且如果數組原型上添加了屬性,也會被遍歷出來建議在遍歷數組時用方法,如果遍歷對象用,再次建議相對來說,它會遍歷出繼
遍歷 for-in
只遍歷對象自身的和繼承的可枚舉的屬性
Object.prototype.enumer=function(){ console.log("可枚舉的"); } var obj={a:1,b:2}; for(var o in obj){ console.log(o); } // a // b // enumer //enumer是繼承來的可枚舉屬性
在遍歷數組時不建議使用,因為for-in遍歷不能保證遍歷順序,并且如果數組原型上添加了屬性,也會被遍歷出來;
在遍歷數組時用for方法,如果遍歷對象用for-in,再次建議相對for-in來說,它會遍歷出繼承來的可枚舉對象,所以更建議使用Obect.keys()方法
forEach
按照索引的順序按個傳遞給定義的一個函數,并且可以在原數組的基礎上進行修改
var arr=[1,2,4,5]; arr.forEach(function(x,i,a){ a[i] = x+1 }) ; // 其中調用函數中有三個參數,x 表示數組中元素,i 表示下標,a 表示數組本身
回調過空位,并且保留空位
var arr=[1,2,,,3,4]; arr.forEach(function(x,i,a){ a[i] = x+1 }); arr; // [2, 3, , , 4, 5]map()
將調用的數組的每個元素傳遞給指定的函數,并返回一個新數組,且函數必須有返回值
var arr=[1,2,3]; arr.map(function(x){ return x * x; }); arr; // [1,4,9]
如果是稀疏數組,返回的也是相同方式的稀疏數組;它具有相同的長度,相同的缺失元素;
filter()判斷傳遞函數返回值是true還是false,true 表示此數組元素被添加到返回數組(新數組)中,false 則相反;
返回一個新數組(通過邏輯判斷的),并且返回的是稠密的數組
[1,2,3].filter(function( x , i ,arr ){ return x<3; }); // [1,2] // 其中三個參數和forEach表示的一樣;
filter() 會跳過稀疏數組中缺少的元素,它的返回數組總是稠密的;
用來壓縮稀疏數組
var dense = sparse.filter(function(){ return true; });
壓縮空缺并刪除undefined和null元素:
a = a.filter(function(x){ return x !==undefined && x !=unll; });every() / some()
兩者都是通過對數組元素應用指定的函數進行判定,返回true或者false;
every() 當且僅當針對數組中的所有元素通過判斷都是true時,函數返回true,如果有一個為false,那么函數返回false;
some() 當數組中有一個元素通過判斷是true時,函數返回true;如果要返回false,必須所有元素都返回false才可以;
[1,3,5].every(function(x){ return x<8 ; }); // true 元素都返回true [1,2,4].some(function(x){ return 4 % 4 === 0; }) // true 有一個元素返回true
兩者都是確認返回什么值,它們就會停止遍歷數組元素;
在空數組上,every()返回true,some()返回 false;
reduce()使用指定的函數將數組元素進行組合,生成單個值,有兩個參數:
第一個參數是執行化簡的函數(化簡函數就是用某種方法把兩個值組合或化簡為一個值,并返回化簡后的值),第二個參數是一個傳遞給函數的初始值;
var arr=[1,2,4]; var brr=arr.reduce(function(res,x,i,arr){ // 其中 res 表示每次化簡后的值,x 表示數組元素,i 表示數組下標,arr 表示數組本身 return res + x; },1); brr; // 8
其中1是初始值,初始值存在的時候,res首先賦初始值,x賦數組第一個元素,進行運算之后,res賦返回的值,x賦數組的第二個元素 ......,如果初始值不存在,那么res,x 分別賦數組第一個和第二個元素,以此類推 ......;
在空數組中,不帶初始值參數調用reduce將會報錯
var arr=[]; var brr=arr.reduce(function(res,x){ return res+x; }); // TypeError: Reduce of empty array with no initial value
如果數組只有一個值且沒有指定初始值,或者有一個空數組且指定一個初始值,reduce只會返回那個值,不會調用化簡函數;
reduceRight()工作原理和reduce一樣,不同的是它按照數組索引從高到低(從左到右)處理數組
for...of...遍歷暫無
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91806.html
摘要:上一篇數據結構與算法鏈表寫在前面說明數據結構與算法系列文章的代碼和示例均可在此找到一集合集合數據結構集合是一種包含不同元素的數據結構。集合中的元素成為成員。 上一篇:JS數據結構與算法_鏈表 寫在前面 說明:JS數據結構與算法 系列文章的代碼和示例均可在此找到 一、集合Set 1.1 集合數據結構 集合set是一種包含不同元素的數據結構。集合中的元素成為成員。集合的兩個最重要特性是:...
摘要:執行測試代碼兩種不同遍歷方法的代碼分別位于和。參考如何使用對一個萬的的表進行遍歷操作關于專注于微信小程序微信小游戲支付寶小程序和線上應用實時監控。自從年雙十一正式上線,累計處理了億錯誤事件,付費客戶有金山軟件百姓網等眾多品牌企業。 GitHub 倉庫:Fundebug/loop-mongodb-big-collection showImg(https://segmentfault.c...
摘要:執行測試代碼兩種不同遍歷方法的代碼分別位于和。參考如何使用對一個萬的的表進行遍歷操作關于專注于微信小程序微信小游戲支付寶小程序和線上應用實時監控。自從年雙十一正式上線,累計處理了億錯誤事件,付費客戶有金山軟件百姓網等眾多品牌企業。 GitHub 倉庫:Fundebug/loop-mongodb-big-collection showImg(https://segmentfault.c...
摘要:我對集合的學習第一步知道相關概念集合是由一組無序且唯一的項組成的,在中已經實現了類似的類。就是集合第二步實現相關操作方法首先實現方法,判斷值是否在集合中,返回布爾值。操作符還有另外一種實現方法,方法返回表明一個對象是否具有特定屬性的布爾值。 我對集合的學習 第一步知道相關概念 集合是由一組無序且唯一的項組成的,在ES6中已經實現了類似的Set類。 function Set() { ...
摘要:目前這個爬蟲還是比較簡單的類型的,直接抓取頁面,然后在頁面中提取數據,保存數據到數據庫。總結寫這個項目其實主要的難點在于程序穩定性的控制,容錯機制的設置,以及錯誤的記錄,目前這個項目基本能夠實現直接運行一次性跑通整個流程。 前言 之前研究數據,零零散散的寫過一些數據抓取的爬蟲,不過寫的比較隨意。有很多地方現在看起來并不是很合理 這段時間比較閑,本來是想給之前的項目做重構的。后來 利用這...
閱讀 5265·2021-09-22 15:59
閱讀 1856·2021-08-23 09:42
閱讀 2561·2019-08-29 18:42
閱讀 3444·2019-08-29 10:55
閱讀 2058·2019-08-27 10:57
閱讀 1759·2019-08-26 18:27
閱讀 2722·2019-08-23 18:26
閱讀 2912·2019-08-23 14:40