开发者社区> 问答> 正文

如何模拟实现 Array.prototype.splice#前端面试

如何模拟实现 Array.prototype.splice#前端面试

展开
收起
一月19 2020-05-23 12:52:08 2070 0
1 条回答
写回答
取消 提交回答
  • 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;
    }
    
    2020-05-23 14:39:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Vue.js 在前端服务化上的探索与实践 立即下载
阿里文娱大前端技术实践 立即下载
前端代码是怎样智能生成的 立即下载