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));
}
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`.
*
@@ -13279,21 +13306,14 @@
if (step && isIterateeCall(start, end, step)) {
end = step = undefined;
}
start = toNumber(start);
start = start === start ? start : 0;
return baseRange(start, end, step);
}
if (end === undefined) {
end = start;
start = 0;
} else {
end = toNumber(end) || 0;
function rangeRight(start, end, step) {
if (step && isIterateeCall(start, end, step)) {
end = step = undefined;
}
step = step === undefined ? (start < end ? 1 : -1) : (toNumber(step) || 0);
var n = nativeMax(nativeCeil((end - start) / (step || 1)), 0);
return baseTimes(n, function(index) {
return index ? (start += step) : start;
});
return baseRange(start, end, step, true);
}
/**
@@ -13795,6 +13815,7 @@
lodash.pullAllBy = pullAllBy;
lodash.pullAt = pullAt;
lodash.range = range;
lodash.rangeRight = rangeRight;
lodash.rearg = rearg;
lodash.reject = reject;
lodash.remove = remove;

View File

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