We know very well how these functions work in Javascript. So, here I am going to write immutable implementations for the same functions as per my understanding. Please do comment your suggestions/concerns/questions. I will always happy to update this article.
function pop(arr) {
let newArr = [...arr];
newArr.length = arr.length - 1;
return newArr;
}
function push(arr, ...item) {
const newArr = [...arr];
if (item.length >= 1) {
for (let i = 0; i < item.length; i++) {
newArr[newArr.length] = item[i];
}
}
return newArr;
}
function shift(arr) {
let [a, ...b] = arr;
return b;
}
function unshift(arr, ...item) {
const newArr = [];
if (item.length >= 1) {
for (let i = 0; i < item.length; i++) {
newArr[i] = item[i];
}
}
newArr.push(...arr);
return newArr;
}
Thank you! Happy Reading!
💎 Love to see your response
- Like - You reached here means. I think, I deserve a like.
- Comment - We can learn together.
- Share - Makes others also find this resource useful.
- Subscribe / Follow - to stay up to date with my daily articles.
- Encourage me - You can buy me a Coffee
Let's discuss further.
- Just DM @urstrulyvishwak
-
Or mention
@urstrulyvishwak
Top comments (3)
Hi Vishwak,
Your implementation of
shifthas a critical flaw. The variablesaandbshould have been declared as local variables instead of adding to the global scope. Otherwise the function was a good cue for how the other functions can be written more concisely as follows.You have written in declarative style.
Also, your
popcan't work as expected. And, doesMath.maxrequired?I followed little imperative.
Thanks. I will update for shift.
Vishwak, The Math.max guards against the deduction of length going negative but you are correct there was an error. These are better.