Access an array in reverse.
Consider the array in the code block below -
Accessing the array is easy enough.
console . log ( nums [ 0 ]);
console . log ( nums [ 1 ]);
console . log ( nums [ 2 ]);
/* 1 2 3 */
But, what if you want to access the array from the last element?
Use pop
We have seen one of the ways to do that using pop
.
console . log ( nums . pop ());
console . log ( nums . pop ());
console . log ( nums . pop ());
/* 3 2 1 */
But, this changes the array.
Use slice
If you want to just access the array from the last element, but not change the array -
console . log ( nums . slice ( - 1 , 3 ));
console . log ( nums . slice ( - 2 , 2 ));
console . log ( nums . slice ( - 3 , 1 ));
// [3] [2] [1]
Or..
console . log ( nums . slice ( - 1 , nums . length ));
console . log ( nums . slice ( - 2 , nums . length - 1 ));
console . log ( nums . slice ( - 3 , nums . length - 2 ));
// [3] [2] [1]
To reverse parts of the array or the whole of it -
console . log ( nums . slice ( - 1 ));
console . log ( nums . slice ( - 2 ));
console . log ( nums . slice ( - 3 ));
// [ 3 ] [ 2, 3 ] [ 1, 2, 3 ]
Use reverse
Instead of accessing the array from the reverse, make reverse the new forward.
const nums = [ 1 , 2 , 3 ];
const numsRv = nums . reverse ();
console . log ( numsRv [ 0 ]);
console . log ( numsRv [ 1 ]);
console . log ( numsRv [ 2 ]);
// 3 2 1
To retain the original array..
const nums = [ 1 , 2 , 3 ];
const numsRv = nums . slice (). reverse ();
console . log ( numsRv [ 0 ]);
console . log ( numsRv [ 1 ]);
console . log ( numsRv [ 2 ]);
// 3 2 1
console . log ( nums );
// [1, 2, 3]
Which options should I choose?
What you choose really depends on what you want to do with the result and with the original array. I would personally use a pop
on an array clone to make the code look squeaky clean and run a bit faster.
const nums = [ 1 , 2 , 3 ];
const numsCp = nums . slice ();
console . log ( numsCp . pop ());
console . log ( numsCp . pop ());
console . log ( numsCp . pop ());
// 3 2 1
console . log ( nums );
// [ 1, 2, 3 ]