作爲練習,我想編寫一個類似於Array.prototype.every()方法的函數all()。只有提供的謂詞對數組中的所有項返回true時,此函數才返回true。如何在Javascript中編寫Array.prototype.every()方法
Array.prototype.all = function (p) {
this.forEach(function (elem) {
if (!p(elem))
return false;
});
return true;
};
function isGreaterThanZero (num) {
return num > 0;
}
console.log([-1, 0, 2].all(isGreaterThanZero)); // should return false because -1 and 0 are not greater than 0
不知何故,這不起作用,並返回true
。我的代碼有什麼問題?有沒有更好的方法來寫這個?
[什麼是\'返回\'關鍵字的可能的複製\'的forEach \'函數裏面是什麼意思? ](https://stackoverflow.com/questions/34653612/what-does-return-keyword-mean-inside-foreach-function) – juvian
你可能會發現這個鏈接有趣http://reactivex.io/learnrx/並採取看看像lodash這樣的圖書館https://lodash.com/docs/4.17.4 – JGFMK
如果你看看你的控制檯,你會發現你沒有得到-1,0爲真,2爲真。沒有殺死循環時它返回false。你不能用forEach殺死循環,因爲它專門用於運行每個項目。 – Meggg