一.改变原数组
reserve,sort,push,pop,unshift,shift,splice
二.不改变原数组
forEach、filter、map、reduce、reduceRight、slice、concat、join、split、toString
1.push
在数组的最后一位添加数据,可以添加一个或多个

在原型上重写,实现push原理
Array.prototype.push = function() {
for(var i = 0; i < arguments.length; i++) {
this[this.length] = arguments[i]
}
}

2.pop
把最后一位剪切出去

Array.prototype.newPop = function() {
var newArr = [];
newArr[0] = this[length - 1]
for(var i = 0; i < this.length - 1; i++) {
this[i] = this[i];
}
return this.length--;
}

3.unshift
从第一位开始添加数据

实现原理思路:
创建一个空数组newArr接收unshif()传入的参数
将调用unshift()的数组添加到newArr的末尾
这时newArr[unshift传入的参数,调用的数组],已达到效果
严谨起见,再将newArr数组赋给被调用函数,最后返回被调用函数
Array.prototype.unshif = function() {
//创建空数组
var newArr = [];
//将unshif中的参数添加到newArr中
for(var i = 0; i < arguments.length; i++) {
newArr[i] = arguments[i];
}
var len = newArr.length;
//将调用unshif的数组添加到newArr的末尾
for(var i = 0 ; i < this.length ; i++) {
newArr[i + len] = this[i]
}
//将newArr赋给调用unshif的数组
for(var i = 0; i < newArr.length; i++) {
this[i] = newArr[i]
}
return this.length;
}

4.shift
删除第一位的数据

Array.prototype.shif = function() {
var newArr = [];
newArr[0] = this[0]
for(var i = 1; i < this.length; i++) {
this[i - 1] = this[i];
}
this.length--;
return newArr
}

5.reverse
逆反

Array.prototype.newReverse = function() {
var len = this.length;
var l = Math.floor(len / 2);
var newLen = len - 1
for(var i = 0 ; i < l; i++) {
var arr = [];
arr[0] = this[i];
this[i] = this[newLen];
this[newLen] = arr[0];
newLen--;
}
return this;
}

6.splice()
剪切
splice(从第几位开始剪切,截取多少长度,在切口处添加新数据

7.sort()
给数组排序

sort的排序是根据asc码排序的

所以,系统给我们留了接口,按照规则就可以自行修改顺序
规则:
1.必须写两个参数(a,b)
2.看返回值return
当return负数时,那么前面的数放在前面 a,b
当return正数时,那么前面的数放在后面 b,a
举例:
a,b就是arr中对应位置上的参数,类似冒泡排序
比较过程:
var arr = [7,3,2,15];
a是arr[0]上的数,b是arr[1]上的数,a>b,前面的数放在后面 b,a [3,7,2,15];
a是arr[0]上的数,b是arr[2]上的数,a>b,前面的数放在后面 b,a [2,7,3,15];
a是arr[0]上的数,b是arr[3]上的数,a<b,前面的数放在前面 a,b [2,7,3,15];
a是arr[1]上的数,b是arr[2]上的数,a<b,前面的数放在前面 b,a [2,3,7,15];
a是arr[1]上的数,b是arr[3]上的数,a<b,前面的数放在前面 a,b [2,3,7,15];
以此类推~
var arr = [1,3,23,15,2];
arr.sort(function(a,b) {
// if(a > b) {
// return 1;
// }else{
// return -1;
// }
//简化成
return a - b;
})

降序:
var arr = [1,3,23,15,2];
arr.sort(function(a,b) {
// if(b > a) {
// return 1;
// }else{
// return -1;
// }
//简化成
return b - a;
})

网友评论