美文网首页
数组常用的方法

数组常用的方法

作者: 63537b720fdb | 来源:发表于2024-05-29 17:18 被阅读0次

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


image.png

在原型上重写,实现push原理

Array.prototype.push = function() {
    for(var i = 0; i < arguments.length; i++) {
        this[this.length] = arguments[i]
    }
}
image.png

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


image.png
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--;
}
image.png

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


image.png

实现原理思路:
创建一个空数组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;
}

image.png

4.shift
删除第一位的数据


image.png
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
}

image.png

5.reverse
逆反


image.png
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;
}
image.png

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


image.png

7.sort()
给数组排序


image.png
sort的排序是根据asc码排序的
image.png
所以,系统给我们留了接口,按照规则就可以自行修改顺序
规则:
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;
})
image.png

降序:

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

相关文章

网友评论

      本文标题:数组常用的方法

      本文链接:https://www.haomeiwen.com/subject/cuofqktx.html