数组的push、pop、unshift、shift

数组的push、pop、unshift、shift及简单重构

1、push
var arr = [1,2,3,4];
var s = arr.push(5,6,7,8);
console.log(arr,s)
// arr = [1,2,3,4,5,6,7,8]   s = 8

push方法可以在其中添加若干个元素放到数组的尾部,返回值是新数组的长度。

利用push方法的返回值可以进行循环

var arr = [];
while(arr.push(1) < 10);
while(arr.push({}) < 10);//放入对象

若是用这种方法放入10个对象,他们之间不会拥有引用关系。

push的重构:

function push(arr) {
  for(var i = 1; i < arguments.length;i++){
      arr[arr.length] = arguments[i];
  }
  return arr.length;
}
2、pop
var arr = [1,2,3,4];
var s =arr.pop();//  arr = [1,2,3]  s = 4;

pop方法中没有任何参数,它是指删除数组尾部的一个元素,返回值为删除的元素。

利用pop方法进行循环:

var arr = [1,2,3,4];
while(arr.pop() !== 3);

可以利用pop删除到我们想让它删除到的地方。

arr.pop() 可能会出现三种 undefined;当数组为空时删除,当删除空字符串以及删除undefined返回值都会为undefined。

虽然pop方法运行速度比较慢,时间复杂度较高,但我们还是会常常用来删除数组中的一些对象。

while(arr.length > 0){
  arr[arr.length - 1] = null;
  arr.pop();
}

pop的重构:

function pop(arr){
  var ele = arr[arr.length - 1];
  if(arr.length > 0) arr.length--;
  return ele;
}
3、unshift
var arr = [1,2,3,4];
var s = arr.unshift(5,6);
// arr = [5,6,1,2,3,4] s = 6

unshift方法中可以添加若干个元素放入到数组的头部,返回值为数组的新长度。

unshift的重构:

function unshift(arr){
  var len = arguments.length - 1;
  for(var i = arr.lenght - 1;i >= 0;i--){
     arr[i+len] = arr[i];
     arr[i] = null
  }
  for(var j = 1; j < arguments.length;j++){
     arr[j -1] = arguments[j];
  }
  return arr.length
}
4、shift
var arr = [1,2,3,4]
var s = arr.shift();
// arr = [2,3,4]   s = 1;

shift方法是将数组头部的一个元素删除,并且返回这个元素,没有参数。

shift的重构:

function shift(arr){
    var ele = arr[0];
    for(var i = 1; i < arr.length;i++){
        arr[i-1] = arr[i];
    }
    return ele;
}
以上四个方法操作后原数组的引用关系不会发生改变。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值