数组的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;
}