function sPlice() {
let len = arguments.length,
result = arguments[0],
index = arguments[1],
item = arguments[2],
itemsLen = arguments.length - 3;
if(len < 3) {
alert('参数输入有误');
}
// 删除操作
else if(len === 3) {
// 从删除截至的元素后一个元素从index位开始往前移动
for(i = index; i < result.length - item; i++) {
result[i] = result[i + item];
}
// 删除末尾的item个元素
for(j = result.length - 1; j > result.length - 1 - item; j--) {
result.pop();
}
return result;
}
// 添加或替换操作
else {
// 添加
if(item === 0) {
// 从index元素的后一个元素开始向右移动添加元素个数的位数
for(let i = result.length - 1 + itemsLen; i > index; i--) {
result[i] = result[i - itemsLen];
}
// 从index元素的后一个元素开始逐个插入需要添加的元素
for(let j = 0; j < itemsLen; j++) {
result[index + 1 + j] = arguments[3 + j];
}
}
// 替换(又分三种情况)
else {
//删除的元素个数等于添加的元素个数,直接重新赋值
if(item === itemsLen) {
for(let i = 0; i < itemsLen; i++) {
result[index + i] = arguments[3 + i];
}
}
// 删除的元素个数小于添加的元素个数,则需要先往右移相应的位数后再重新赋值
else if(item < itemsLen) {
// 先右移
for(let i = len - 1; i > index - 1 + itemsLen; i--) {
result[i + (itemsLen - item)] = result[i];
}
// 重新赋值
for(let j = 0; j < itemsLen; j++) {
result[index + j] = arguments[3 + j];
}
}
// 删除的元素个数大于添加的元素个数,则需要先往左移相应的位数然后删除末尾相应位数的元素最后再重新赋值
else {
// first, left shift
// todo
// then, delete the end of the elements
// todo
// assignment in the last
}
}
return result;
}
}
console