JSFiddle - React, Tailwind, and code Playground
by Anurag Udasi
JavaScript
/**
array.splice(start)
array.splice(start, deleteCount)
array.splice(start, deleteCount, item1, item2..)
returns deleted elements array
mutates the array
start =>
> length of array, then length
< 0, then start from the end of array
deleteCount =>
= < 0, none deleted
> array.length - start, array.length
*/
Array.prototype.mySplice = function(start, deleteCount, ...items) {
let newArray = [], deleteElementsArray = [], i, item;
if (start) {
if (start > this.length) {
start = this.length;
} else if (start < 0) {
start = this.length + start;
}
} else {
start = 0;
}
if (deleteCount) {
if (deleteCount < 0) {
deleteCount = 0;
} else if (deleteCount >= this.length) {
deleteCount = this.length;
} else if (deleteCount + start >= this.length) {
deleteCount = this.length - start;
}
} else {
deleteCount = this.length - start;
}
for (i = 0; i < start; i++) {
newArray[i] = this[i];
}
for (; deleteCount; deleteCount--) {
deleteElementsArray.push(this[i++]);
}
for (; i < this.length; i++) {
newArray.push(this[i]);
}
for (item of items) {
newArray.push(item);
}
for (i = 0; i < newArray.length; i++) {
this[i] = newArray[i];
}
this.length = newArray.length;
return deleteElementsArray;
};
var arr1 = [1,2,3,4];
console.log('deleted array', arr1.mySplice(1));
console.log('array itself', arr1);
var arr1 = [1,2,3,4];
console.log('deleted array', arr1.splice(1));
console.log('array itself', arr1);
var arr2 = [1,2,3,4];
console.log('deleted array', arr2.mySplice(1, 2));
console.log('array itself', arr2);
var arr2 = [1,2,3,4];
console.log('deleted array', arr2.splice(1, 2));
console.log('array itself', arr2);
var arr3 = [1,2,3,4];
console.log('deleted array', arr3.mySplice(1, 3, 5, 6, 7));
console.log('array itself', arr3);
var arr3 = [1,2,3,4];
console.log('deleted array', arr3.splice(1, 3, 5, 6,...