It’s not an “ES6” thing, for accessing a specific value at a specific index you just do arr[0]. There isn’t really a “new” way of doing this. JavaScript is just JavaScript, they just add features but the language is still the same.
Aside from destructuring, the only real alternative is that if you want to be able to use negative numbers, you can use at (note that this does not work yet on Safari, either desktop or mobile [which means it just flat out doesn’t work on iPhones], which limits its usefulness):
> [1,2,3,4,5].at(-1)
5
Which means that if you want the last value in an array (common need) you don’t have to write:
> const arr = [1,2,3,4,5]
> arr[arr.length - 1]
5
And at works fine with anything else:
> [1, 2, 3, 4, 5].at(1)
2
Destructuring, like in Python (normally called unpacking instead), is a shortcut that just lets you assign specific elements in a structure (in JS, an array or a plain object) to variables all at once.
JS, even though how the language works is different, basically has feature parity with Python. It uses slightly different syntax (mostly less – eg no brackets needed in Python, JS doesn’t allow using _ to denote values you want to ignore, JS uses for...of not for...in to take one of the cases where destructuring is often used). Only real difference is that you can’t do this:
first, *middle, last = [1, 2, 3, 4, 5]
# first is 1, middle is [2, 3, 4], last is 5
*first, last = [1, 2, 3, 4, 5]
# first is [1, 2, 3, 4], last is 5
JS uses the rest/spread operator (...thing) instead of Python’s star variables (*thing), but it has to be the last thing. These don’t work, they’ll just error:
[first, ...middle, last] = [1, 2, 3, 4, 5]
[...first, last] = [1, 2, 3, 4, 5]
Can only do:
> [first, ...last] = [1, 2, 3, 4, 5]
> first
1
> last
[2, 3, 4, 5]