我創建一個each
函數來處理不同類型的回調,如返回元素不起作用 - JS
iterateCollection的 - W/C剛剛返回/打印數組或對象的項目
returnEvenElements - W/C返回甚至數組元素
returnKeyDivisbleBy3 - W/C返回按3
returnKeyWithArrayValue aredivisible數組元素 - W/C返回 對象的以與陣列值的鍵或屬性。
這裏就是我的意思是:
var myArray = [1, 2, 3, 4, 5];
var myObject = {
num1: 1,
num2: 2,
num3: [1, 2, 3]
};
function each(collection, callback) {
if (collection instanceof Array) {
for (var i = 0, l = collection.length; i < l; i++) {
callback(collection[i]);
};
} else if (collection instanceof Object) {
for (var prop in collection) {
callback(collection[prop]);
};
}
}
function returnKeyWithArrayValue(collection, prop) {
return collection[prop] instanceof Array;
}
function returnKeyDivisbleBy3(collection, prop) {
return collection[prop] % 3;
}
function returnEvenElements(collection) {
return (typeof collection === 'number') && !(collection % 2);
}
function iterateCollection(collection) {
return collection;
}
var output1 = each(myArray, returnEvenElements);
console.log(output1);
var output2 = each(myArray, iterateCollection);
console.log(output2);
var output3 = each(myObject, returnKeyWithArrayValue);
console.log(output3);
var output4 = each(myArray, returnKeyDivisbleBy3);
console.log(output4);
但在傳遞上下文,它不返回任何東西,即使其中一個不工作。我使用'return
'關鍵字來返回元素,但沒有將它們打印在屏幕上或記錄它們。
想知道我是否缺少什麼?請幫忙!
您需要回電話後出,在每個功能 –
回報回調(集合[1]);試過這個,但我的函數不會返回任何東西。 –
@JamesHedegon如果你寫'return callback(collection [i]);'那麼它會返回一些東西,看看[fiddle](https://jsfiddle.net/8w88e1w8/)。它可能不會返回你想要的,但它返回一些東西。 –