簡體   English   中英

如何使用相同的函數迭代對象/數組(不使用forEach)

[英]How to iterate over objects/arrays using the same function (without forEach)

我有一項學術任務,需要我的職能對一個集合進行迭代。 我基本上是在學習forEach的工作方式,所以我不能使用它。 該集合可以是數組或對象。 我知道如何分別執行這兩個操作,但是如何使現有函數處理傳遞給它的任何集合? 到目前為止,這就是我對數組部分的要求:

function(myCollection, myIterFunc){
for (var i = 0; i< myCollection.length; i++){
    myIterFunc(myCollection[i], i, myCollection);
}
};

我會使用isArray方法。

function(myCollection, myIterFunc){
    if (Array.isArray(myCollection)){
        for (var i = 0; i< myCollection.length; i++){
            myIterFunc(myCollection[i], i, myCollection);
        }
    } else {
        for (var key in myCollection){
            if (myCollection.hasOwnProperty(key)){
                myIterFunc(myCollection[key], key, myCollection);
            }
        }
    }
};

也許是這樣的:

var str = 'one, two, three';
var ob = {
  item_1: 'one',
  item_2: 'two',
  item_3: 'three'
};
var ary = ['one', 'two', 'three'];

var myRuggedLittleIterator = function(col){
  if(typeof col !== 'object'){return;} 
  var colKeys = Object.keys(col);
  for (var i = 0; i < colKeys.length; i++){
    console.log(col[colKeys[i]]);
  }
};

myRuggedLittleIterator(str);
myRuggedLittleIterator(ob);
myRuggedLittleIterator(ary);

然后,通過查看jQuery的each方法的源代碼進行一些學術研究(不要just竊只是為了獲得啟發)

在您的方法內部,您將始終必須檢查是否要遍歷對象或數組,因為遍歷這些結構的方法是不同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM