我一直在解決一個問題,需要一些幫助!JavaScript函數無法按預期工作
我已經建立了我自己的每個以下功能:
var myArray = [1,2,3,4,5]; // this will be running through the collection parameter
var each = function (collection, callback) {
if (Array.isArray(collection)) {
for (i=0; i<collection.length; i++) {
callback(collection[i]);
};
} else {
for (var property in collection){
callback(collection[property]);
}
}
};
我還創建了下面自己的過濾功能:
var filter = function(collection, predicate) {
var newArray= [];
if (each(collection, predicate)) {
newArray.push(collection[property]);
};
return newArray;
};
var test = function (item) {
return item > 2;
}; // this will be running through the predicate parameter
filter(myArray, test);
我試圖做的,在不改變每個功能或測試功能,只有過濾功能,都可以利用過濾功能中的每個功能。最後一行代碼將返回的是myArray的每個元素,最終在謂詞參數下是真實的 - 在這種情況下,是測試函數。所以結果應該是[3,4,5]。但是,我只是讓數組打印出空的。我知道那裏的錯誤在於 - 我相信它是在這裏:
if (each(collection, predicate))
這行代碼是試圖做的,是使用的各項功能,使用謂詞函數集合中的每個項目迭代,如果該特定item在謂詞下評估爲真,下面一行將元素推入newArray。
希望這是有道理的!
不要忘記用'var'聲明你的局部變量! – Pointy 2015-02-11 02:27:07