数组的原生系列

//原生系列

填入两个参数,start 和 end

Array.prototype.slice = function (start, end) {
  var result = new Array();
  var start = start || 0;
  var end = end || this.length;
  for (var i = start; i < end; i++) {
    result.push(this[i]);
  }
  return result;
}

// call 这个形式 全部接收


function arg2arr() {
  console.log(arguments);
  var arr = Array.prototype.slice.call(arguments);   //apply[...arguments]
  console.log(arr)
}
arg2arr(1, 2, 3)
//这个技巧可以很巧妙的改变入参  运用了数组的一些原生方法
function foo(...args) {
  // args已经是一个真正的数组

  args.log();
  //丢弃args中的第一个元素
  // args.shift();

  //把整个args作为参数传递给console.log(..)
  console.log(...args);
}
foo(1, 2, 3, 4, 5)
// 这里运用了运算符...对称而又相反的用法

slice的几个特性:1.不改变原数组 2.参数从指定位开始,不包含指定位结束。3.返回值为截取出来的元素的集合

splice(start, deleteCount, item1, item2):

  1. 返回新数组, 原数组被改变了

  2. start开始的位置,deletCount要截取的个数,后面items为要添加的元素

  3. 如果deleteCount为0,则表示不删除元素,从start位置开始添加后面的几个元素到原始的数组里面

//例子

最后更新于

这有帮助吗?