Improuvements: removed calls to String(…) (speed), construction of arrays like new Array(len) (standards), replaced arr.push(val) with arr[arr.length] = val (speed).

This commit is contained in:
Ryan W Tenney
2010-08-31 17:02:32 -04:00
parent 116ff91bec
commit 19acc63374

View File

@@ -85,7 +85,7 @@
if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
var results = []; var results = [];
each(obj, function(value, index, list) { each(obj, function(value, index, list) {
results.push(iterator.call(context, value, index, list)); results[results.length] = iterator.call(context, value, index, list);
}); });
return results; return results;
}; };
@@ -132,7 +132,7 @@
if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
var results = []; var results = [];
each(obj, function(value, index, list) { each(obj, function(value, index, list) {
iterator.call(context, value, index, list) && results.push(value); if (iterator.call(context, value, index, list)) results[results.length] = value;
}); });
return results; return results;
}; };
@@ -141,7 +141,7 @@
_.reject = function(obj, iterator, context) { _.reject = function(obj, iterator, context) {
var results = []; var results = [];
each(obj, function(value, index, list) { each(obj, function(value, index, list) {
!iterator.call(context, value, index, list) && results.push(value); if (!iterator.call(context, value, index, list)) results[results.length] = value;
}); });
return results; return results;
}; };
@@ -285,7 +285,7 @@
_.flatten = function(array) { _.flatten = function(array) {
return _.reduce(array, function(memo, value) { return _.reduce(array, function(memo, value) {
if (_.isArray(value)) return memo.concat(_.flatten(value)); if (_.isArray(value)) return memo.concat(_.flatten(value));
memo.push(value); memo[memo.length] = value;
return memo; return memo;
}, []); }, []);
}; };
@@ -300,7 +300,7 @@
// been sorted, you have the option of using a faster algorithm. // been sorted, you have the option of using a faster algorithm.
_.uniq = function(array, isSorted) { _.uniq = function(array, isSorted) {
return _.reduce(array, function(memo, el, i) { return _.reduce(array, function(memo, el, i) {
if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) memo.push(el); if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) memo[memo.length] = el;
return memo; return memo;
}, []); }, []);
}; };
@@ -321,8 +321,8 @@
_.zip = function() { _.zip = function() {
var args = _.toArray(arguments); var args = _.toArray(arguments);
var length = _.max(_.pluck(args, 'length')); var length = _.max(_.pluck(args, 'length'));
var results = new Array(length); var results = [];
for (var i = 0; i < length; i++) results[i] = _.pluck(args, String(i)); for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
return results; return results;
}; };
@@ -354,7 +354,7 @@
var start = solo ? 0 : a[0], stop = solo ? a[0] : a[1], step = a[2] || 1; var start = solo ? 0 : a[0], stop = solo ? a[0] : a[1], step = a[2] || 1;
var len = Math.ceil((stop - start) / step); var len = Math.ceil((stop - start) / step);
if (len <= 0) return []; if (len <= 0) return [];
var range = new Array(len); var range = [];
for (var i = start, idx = 0; true; i += step) { for (var i = start, idx = 0; true; i += step) {
if ((step > 0 ? i - stop : stop - i) >= 0) return range; if ((step > 0 ? i - stop : stop - i) >= 0) return range;
range[idx++] = i; range[idx++] = i;
@@ -434,7 +434,7 @@
_.keys = nativeKeys || function(obj) { _.keys = nativeKeys || function(obj) {
if (_.isArray(obj)) return _.range(0, obj.length); if (_.isArray(obj)) return _.range(0, obj.length);
var keys = []; var keys = [];
for (var key in obj) if (hasOwnProperty.call(obj, key)) keys.push(key); for (var key in obj) if (hasOwnProperty.call(obj, key)) keys[keys.length] = key;
return keys; return keys;
}; };