[英]How can I iterate over objects and arrays of objects in an object and run the same function in each object?
[英]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.