今天在寫程式碼的時候在用for-in循環遍歷數組的時候會出現一些莫名的東西出來,後面查了一下資料。才知道for-in 迴圈和for迴圈的差別。
for -in 循環 就是迭代,他迭代的是當前物件的所有的屬性和方法,它本身會過濾掉系統原來寫好的屬性和方法,如果我們給他加了屬性和方法。在for-in 的時候就會將這些我們加的屬性和方法遍歷出來。
例如:我為js當中的array加了一個方法
//Array中的prototype方法就是给所有的数组都添加了一个新定义的方法名字为unique Array.prototype.unique = function(){ alert("unique"); } var arr = [0,1,2];
那麼當上述程式碼執行之後,所有的陣列裡面就加入了這個方法。所以接下來在用for-in 迴圈的時候就會將這個函數也遍歷出來。
for(var i in arr){ concole.log(arr[i]); }
這個時候的列印結果為
#
要不遍歷自己定義的方法,系統提供了一個方法可以去判斷當前的屬性是否為之後添加的而不是系統原有的就是array.hasOwnProperty(i)
上述程式碼想要不列印自訂的方法那麼就去判斷一下這個東西
for(var i in arr){ if(!arr.hasOwnProperty(i)){ continue; } console.log(arr[i]); }
用這個方法去判斷i是否為後面新添加的屬性或者方法,如果是新添加的那麼就跳過執行下一條。
當然瞭如果是陣列的話,我們最好不要用for - in 迴圈去遍歷,最好還是採用for 迴圈來寫,這樣可以避免一些不必要的麻煩
以上是for-in迴圈和for迴圈遍歷陣列的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!