Skip to content

Commit b8d35d7

Browse files
committed
Utils.Array.NumerArray can now accept the start and end parameters in reverse order, i.e. 10, 1 will generate a number array running from 10 to 1. Internally it has also been optimized to skip string based returns.
1 parent dfb71fe commit b8d35d7

1 file changed

Lines changed: 43 additions & 14 deletions

File tree

src/utils/array/NumberArray.js

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,17 @@
88
* Create an array representing the range of numbers (usually integers), between, and inclusive of,
99
* the given `start` and `end` arguments. For example:
1010
*
11-
* `var array = numberArray(2, 4); // array = [2, 3, 4]`
12-
* `var array = numberArray(0, 9); // array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]`
11+
* `var array = Phaser.Utils.Array.NumberArray(2, 4); // array = [2, 3, 4]`
12+
* `var array = Phaser.Utils.Array.NumberArray(0, 9); // array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]`
13+
* `var array = Phaser.Utils.Array.NumberArray(8, 2); // array = [8, 7, 6, 5, 4, 3, 2]`
1314
*
14-
* This is equivalent to `numberArrayStep(start, end, 1)`.
15+
* This is equivalent to `Phaser.Utils.Array.NumberArrayStep(start, end, 1)`.
1516
*
1617
* You can optionally provide a prefix and / or suffix string. If given the array will contain
1718
* strings, not integers. For example:
1819
*
19-
* `var array = numberArray(1, 4, 'Level '); // array = ["Level 1", "Level 2", "Level 3", "Level 4"]`
20-
* `var array = numberArray(5, 7, 'HD-', '.png'); // array = ["HD-5.png", "HD-6.png", "HD-7.png"]`
20+
* `var array = Phaser.Utils.Array.NumberArray(1, 4, 'Level '); // array = ["Level 1", "Level 2", "Level 3", "Level 4"]`
21+
* `var array = Phaser.Utils.Array.NumberArray(5, 7, 'HD-', '.png'); // array = ["HD-5.png", "HD-6.png", "HD-7.png"]`
2122
*
2223
* @function Phaser.Utils.Array.NumberArray
2324
* @since 3.0.0
@@ -33,22 +34,50 @@ var NumberArray = function (start, end, prefix, suffix)
3334
{
3435
var result = [];
3536

36-
for (var i = start; i <= end; i++)
37+
var i;
38+
var asString = false;
39+
40+
if (prefix || suffix)
3741
{
38-
if (prefix || suffix)
42+
asString = true;
43+
44+
if (!prefix)
3945
{
40-
var key = (prefix) ? prefix + i.toString() : i.toString();
46+
prefix = '';
47+
}
4148

42-
if (suffix)
49+
if (!suffix)
50+
{
51+
suffix = '';
52+
}
53+
}
54+
55+
if (end < start)
56+
{
57+
for (i = start; i >= end; i--)
58+
{
59+
if (asString)
4360
{
44-
key = key.concat(suffix);
61+
result.push(prefix + i.toString() + suffix);
62+
}
63+
else
64+
{
65+
result.push(i);
4566
}
46-
47-
result.push(key);
4867
}
49-
else
68+
}
69+
else
70+
{
71+
for (i = start; i <= end; i++)
5072
{
51-
result.push(i);
73+
if (asString)
74+
{
75+
result.push(prefix + i.toString() + suffix);
76+
}
77+
else
78+
{
79+
result.push(i);
80+
}
5281
}
5382
}
5483

0 commit comments

Comments
 (0)