1
votes

I currently use this bit of javascript inside Adobe After Effects to print a customizable list of numbers

x = 0 //starting point (the first number in the list);
y= 20 //increments (the size of the steps);
z= 5 //the number of steps;

Array.from(new Array(z)).map((_, i) => i * y + x).join("\n")

which (in this case) would output

0
20
40
60
80

It would be really cool if I could also generate the list in reverse

80
60
40
20
0 

but because I'm not a programmer I have no idea how to do this. Could someone help me with this?

2
You might not be a programmer, but can't you Google it?!jonrsharpe
there is a .reverse()cmgchess
thats the problem. I know absolutely nothing about programming so vage suggestions and code snippets that would be enough in most cases dont really help me. I tried to copy paste some of the stuff from google into the code but with 0 knowledge its impossible (at least for me) to get something to work.zzTop

2 Answers

-1
votes

Instead of starting from the first number (x) and adding y for each iteration, you can start from the last number and subtract y for every iteration.

The last number would be the number of times y is added added to x. That gives the formulat (z - 1) * y) + x

x = 0 //starting point (the first number in the list);
y= 20 //increments (the size of the steps);
z= 5 //the number of steps;

const result = Array.from(new Array(z))
  .map((_, i) => (((z - 1) * y) + x) - (i * y)).join("\n");
console.log(result);
-1
votes

I think there is no need to optimisation here, as the op has no programming experience, a simple solution is well enough, which would be the Array.reverse().

See the the MDN docs for correct usage.

const x = 0 //starting point (the first number in the list);
const y= 20 //increments (the size of the steps);
const z= 5 //the number of steps;

const array = Array.from({length: z}, ((_, i) => i * y + x)).reverse().join("\n");

console.log(array);

Another possible solution: simply populate your array from the back. Then no need to reverse.

 const x = 0 //starting point (the first number in the list);
    const y= 20 //increments (the size of the steps);
    const z= 5 //the number of steps;

    const array = Array.from({length: z}, ((_, i) => (z * y - y) - i * y)).join("\n");

    console.log(array);