Issue #202 ... fallback method for sparse arrays.

This commit is contained in:
Jeremy Ashkenas
2011-05-11 10:27:52 -04:00
parent 5951d354af
commit 057da5bc82
2 changed files with 4 additions and 8 deletions

View File

@@ -26,10 +26,6 @@ $(document).ready(function() {
_.each([1, 2, 3], function(num, index, arr){ if (_.include(arr, num)) answer = true; }); _.each([1, 2, 3], function(num, index, arr){ if (_.include(arr, num)) answer = true; });
ok(answer, 'can reference the original collection from inside the iterator'); ok(answer, 'can reference the original collection from inside the iterator');
answers = [];
_.each({range : 1, speed : 2, length : 3}, function(v){ answers.push(v); });
ok(answers.join(', '), '1, 2, 3', 'can iterate over objects with numeric length properties');
answers = 0; answers = 0;
_.each(null, function(){ ++answers; }); _.each(null, function(){ ++answers; });
equals(answers, 0, 'handles a null properly'); equals(answers, 0, 'handles a null properly');

View File

@@ -73,7 +73,7 @@
obj.forEach(iterator, context); obj.forEach(iterator, context);
} else if (_.isNumber(obj.length)) { } else if (_.isNumber(obj.length)) {
for (var i = 0, l = obj.length; i < l; i++) { for (var i = 0, l = obj.length; i < l; i++) {
if (iterator.call(context, obj[i], i, obj) === breaker) return; if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
} }
} else { } else {
for (var key in obj) { for (var key in obj) {
@@ -512,7 +512,7 @@
var funcs = slice.call(arguments); var funcs = slice.call(arguments);
return function() { return function() {
var args = slice.call(arguments); var args = slice.call(arguments);
for (var i=funcs.length-1; i >= 0; i--) { for (var i = funcs.length - 1; i >= 0; i--) {
args = [funcs[i].apply(this, args)]; args = [funcs[i].apply(this, args)];
} }
return args[0]; return args[0];