What is nice about this is that you can see that the source array is not mangled, this is not the case with the array splice method that will mutate the array in place. Many built in array prototype methods are like that which is one talking point as to why a lot of developers still like to use lodash over some of this built in methods.
2 - Getting the last element of an array with array slice
Negative index values can be given to Array.slice this results in the corresponding index value from the end of the length of an array. So then array slice can be used as a quick way of getting the last element of an array by taking advantage of this fact by passing negative 1 as the starting index.
So I guess it is slightly more concise then doing the same thing by subtracting one from the length of the array that I would usually use over doing that at least.
However there are yet event more ways of getting the last element in an array, but some of them will mutate the source array. Still if I just want to get the last element of an array, maybe it would be best to just use something like this and move on. This is not the kind of rabbit hole that I care to get stuck on, and I can always make these kinds of simple changes later on when maintaining a project of it comes to that.
So because Array.slice returns a new Array rather than mutating one, it can in some cases be used as a way to clone an array assuming it is an array of primitive values. What I mean by that is that the use of Array.slice as a way to copy and array by itself will result in a shallow clone of the source array. So if the source array contains one or more objects as elements then those elements in the resulting array will be the same references to the same objects in memory. For this reason it is necessary to look into options for deep cloning an object then.
4 - Some use case examples of array slice
4.1 - Convert an array like object to an array
Often I might end up with something that is an array like object, in other words it is an object that is formated like an array, but it is not an array. The format of an array like object is that it has numbed key named for values, and a length property that reflects the number of these numbered keys, however the prototype of the object is something other than the of the array prototype. One way to go about converting one of these array like objects would be to have a helper method that uses the array slice method with call to force the method to work with an array like object, and because the properties of the object are like that of the array it should work
Array like objects will pop up when working on projects now and then, for example inside the body of a function there is of course the arguments object that is one of these kinds of objects, another major example of this would be an HTML collection. However there are a lot of other ways to go about doing this sort of thing with an array like object. One of the many ways to do so would be to just use the Array.from method to convert and array like object to a regular array.
4.2 - Format a number example
One use case example that I made for this post was a format money example. There are a lot of ways of going about doing this sort of thing, and it would be a good idea to look into a few other examples of how to go about doing this other that the example I made for this post.
However making some kind of solution like this might prove to be more complex than needed. In most cases I want to format a number because it is a money value. Or for one reason or another I want to do something to format the number in a way that helps to make it more readable. In modern specs of javaScipt there is the number format method in the international object than can be used to make quick work of these sorts of things.
4.3 - Random color example
ANother good example might be some kind of random color method example that makes use of the array slice method as part of the process of doing so. However there are a number of other examples of how to go about making a random color method, many of which might not need the use of array slice, and might prove to be more concise. Never the less for the sake of just having some array slice method examples I have went with a method that make used of that of course.
Here I am using the Math random method to get a random number between 0 and 1, and I then use the to string method of the returned number to get a hex string of that value. After that I call the split method of the resulting string to get an array of random hex values, and then you guessed it used the array slice method to get the last six random hex letters. I then just use the array join method to set these six random hex letters in an array back to a string and concatenated it with the number symbol to get a valid hex color string.
5 - Conclusion
So the array slice prototype method is a way to get a section of an array, without mutating the source array. This is not to be confused with the array splice method that can be use to do the same, only it will mutate the array in place. The array splice method is work checking out though for sure it is still a useful method and and just for the sake of getting a range of elements fro a source array, it can also be used to inject elements into an array also while one is at it.
When it comes to a nodejs environment there is the buffer slice method that works just like the array slice method only with nodejs data buffers rather than arrays. There is also the idea of doing something similar to what the array slice method is doing in all kinds of collections such as with strings, typed arrays, html collections, and all kinds of similar objects that there are to work with in various environments.
I am sure that I will come up with more use case examples of the array slice method when I get some time to work on editing this ppst a little more. However for now I think this will be it, I am sure that I did an okay job covering the basic idea of what array slice is all about to say the least.