如何模拟实现 Array.prototype.splice#前端面试
Array.prototype._splice = function(start, deleteCount, ...items) {
if (start > 0) {
if (start > this.length - 1) {
start = this.length - 1;
}
} else {
if (Math.abs(start) > this.length - 1) {
start = 0;
} else {
start = this.length - 1 + start;
}
}
const newArr = [];
const removed = [];
deleteCount = isNaN(Number(deleteCount)) ? 0 : Number(deleteCount);
for (let i = 0; i < this.length; i++) {
if (i < start || i > start + deleteCount - 1) {
newArr.push(this[i]);
} else {
removed.push(this[i])
}
if (i === start + deleteCount - 1) {
newArr.push(...items)
}
}
for (let i = 0; i < newArr.length; i++) {
this[i] = newArr[i];
}
this.length = newArr.length;
return removed;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。