Add _.rangeRight.

This commit is contained in:
John-David Dalton
2015-12-02 21:42:51 -08:00
parent 3d43cc1029
commit 1ae6e67cdc
2 changed files with 37 additions and 15 deletions

View File

@@ -3247,6 +3247,33 @@
return min + nativeFloor(nativeRandom() * (max - min + 1)); return min + nativeFloor(nativeRandom() * (max - min + 1));
} }
function baseRange(start, end, step, fromRight) {
start = toNumber(start);
start = start === start ? start : 0;
if (end === undefined) {
end = start;
start = 0;
} else {
end = toNumber(end) || 0;
}
step = step === undefined ? (start < end ? 1 : -1) : (toNumber(step) || 0);
var index = -1,
length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
result = Array(length);
while (++index < length) {
if (fromRight) {
result[index] = (end -= step);
} else {
result[index] = start;
start+= step;
}
}
return result;
}
/** /**
* The base implementation of `_.set`. * The base implementation of `_.set`.
* *
@@ -13279,21 +13306,14 @@
if (step && isIterateeCall(start, end, step)) { if (step && isIterateeCall(start, end, step)) {
end = step = undefined; end = step = undefined;
} }
start = toNumber(start); return baseRange(start, end, step);
start = start === start ? start : 0; }
if (end === undefined) { function rangeRight(start, end, step) {
end = start; if (step && isIterateeCall(start, end, step)) {
start = 0; end = step = undefined;
} else {
end = toNumber(end) || 0;
} }
step = step === undefined ? (start < end ? 1 : -1) : (toNumber(step) || 0); return baseRange(start, end, step, true);
var n = nativeMax(nativeCeil((end - start) / (step || 1)), 0);
return baseTimes(n, function(index) {
return index ? (start += step) : start;
});
} }
/** /**
@@ -13795,6 +13815,7 @@
lodash.pullAllBy = pullAllBy; lodash.pullAllBy = pullAllBy;
lodash.pullAt = pullAt; lodash.pullAt = pullAt;
lodash.range = range; lodash.range = range;
lodash.rangeRight = rangeRight;
lodash.rearg = rearg; lodash.rearg = rearg;
lodash.reject = reject; lodash.reject = reject;
lodash.remove = remove; lodash.remove = remove;

View File

@@ -22570,6 +22570,7 @@
'pullAll', 'pullAll',
'pullAt', 'pullAt',
'range', 'range',
'rangeRight',
'reject', 'reject',
'remove', 'remove',
'sampleSize', 'sampleSize',
@@ -22592,7 +22593,7 @@
var acceptFalsey = lodashStable.difference(allMethods, rejectFalsey); var acceptFalsey = lodashStable.difference(allMethods, rejectFalsey);
QUnit.test('should accept falsey arguments', function(assert) { QUnit.test('should accept falsey arguments', function(assert) {
assert.expect(282); assert.expect(284);
var emptyArrays = lodashStable.map(falsey, lodashStable.constant([])); var emptyArrays = lodashStable.map(falsey, lodashStable.constant([]));
@@ -22630,7 +22631,7 @@
}); });
QUnit.test('should return an array', function(assert) { QUnit.test('should return an array', function(assert) {
assert.expect(68); assert.expect(70);
var array = [1, 2, 3]; var array = [1, 2, 3];