zoukankan      html  css  js  c++  java
  • Array 基础

    前端小菜从今天开始记录js学习收获,记录内容来自红宝书
    首先带来的是array的理解

    • array的定义
    • array的检测
    • array常用方法
      1. 栈方法
      2. 队列方法
      3. 排序
      4. 元素操作
      5. 位置查找
      6. 迭代方法
      7. 归并方法

    array的定义

    关于数组定义主要有两种方式:构造函数法和字面量法多数人钟情于后者,简单、粗暴

    构造函数法

    var arr =new Array();

    当构造函数法 new Array(n),只有一个参数时,若参数为数字即生成一个length为n的数组,否则便生成只有 一个元素 n的数组

    字面量法

    var arr =[];

    检测数组

    Array.isArray()检测某个值是否为数组

    接下来是对于数组的一些操作主要涉及到push、pop、shift、unshift、sort、reverse等方法

    栈方法(后进先出)

    js作为一个动态的脚本语言,可以通过自己的方式去模拟其他语言的功能,从而造就了它的强大

    js通过push和pop来模拟了栈的行为

    push在数组末尾添加元素,返回数组长度

    var arr =['john'];
    arr.push('jack'); //return 2
    console.log(arr) //'john','jack'

    pop实现从数组末尾移除最后一项

    arr.pop() //return jack

    队列方法(先进先出)

    js通过shift和push可以模拟队列行为
    push向数组末尾推入一个元素,shift从数组前端移除一个元素

    shift移除数组中第一个元素,返回删除元素

    var arr =['jack','john'];
    var newArr = arr.shift(); //jack
    console.log(arr) //john

    与shift对应的还有unshift, unshift是向数组的前端插入任意项

    arr.unshift(1,2,3)
    console.log(arr) //1,2,3,'john'

    排序

    数组的排序方法有reversesort

    reverse()方法是反转数组顺序

    var arr =[1,2,3,4]
    arr.reverse() // arr=>4,3,2,1

    sort()实现函数排序功能(默认升序排列),在比较之前会调用每个元素的toString()方法,然后进行比较,所以排序结果会与我们的预期(升序或降序)有所出入
    为了达到预期效果偶们需要给sort传递一个compare方法

    function compare(value1,value2){
    
        if(value1<value2>{
            return -1;
        }else if (value1>value2){
            reutrn 1;
        }else{
            return 0;
        }
    

    }

    var arr =[1,4,2,6,5]
    arr.sort(compare)
    console.log(arr) //1,2,4,5,6

    当然也有一个简化版比较函数(适应于数值类型和typeOf返回数值类型的对象类型)

    function compare(value1,value2){
    return value1 -value2; //升序
    }

    操作方法

    concat()可以基础当前数组所有项创建一个新数组

    var arr =[1,2,3];
    var arr1 =arr.concat('jack','hello');

    arr //1,2,3
    arr1 //1,2,3,'john','hello'

    slice()基于当前数组的一个或多个项创建一个新数组,slice()可以接受一个或两个参数,表示返回项的起始和结束位置
    *只有一个参数时返回指定位置开始到数组末尾的所有项,无参数时默认从0开始
    *两个参数时,返回起始位置到结束位置之间(不包含结束位置)的项

    var arr =[1,2,3,4,5]
    var arr1 =arr.slice() //1,2,3,4,5
    arr.slice(1) //2,3,4,5
    arr.silce(1,3) //2,3

    splice()可以通过参数控制实现对数组的元素的直接(对原数组操作)删除,插入,替换
    *删除--指定两个参数,第一项位置和要删除的项数,返回删除项

    var arr =[1,2,3,4,5]
    arr.splice(1,2) //2,3
    arr //1,4,5

    *插入--提供三个参数:起始位置,0(要删除个数),要插入项

    var arr =[1,2,3,4,5]
    arr.splice(1,0,'jack','john')
    arr // 1,'jack','john',2,3,4,5

    *替换-类似于对插入方法的扩展,只是把插入方法的第二个参数变成非零,即可实现插入的效果

    位置方法(indexOf/lastIndexOf)

    都接受两个参数:要查找的项和查找起点索引,当省略第二个参数即取默认值0,内部执行(全等)===操作,所以匹配项必须严格相等,查找不到目标元素返回-1,

    var arr =[1,2,34,4,5,7]
    arr.indexOf(34) //2
    arr.indiexOf(34,3) //-1

    迭代方法

    :给定函数接受三个参数:元素值,索引,当前数组对象
    *every()对对数组每一元素运行给定函数,都为true则返回true
    *some()对数组每一元素执行给定函数,任一项返回true,则返回true
    *filter()对数组每一元素执行给定函数,返回给定函数返回true的值,组成的新数组
    *forEach()对数组每一元素执行给定函数,类似于for
    *map()对数组每一元素运行给定函数,返回每次调用结果组成的数组

    var arr =[1,2,3]

    every()

    var result =arr.every(function(item,index,array){
    return item>1
    })
    result //false

    filter()

    var newArr = arr.filter(function(item,index,aarray){
    return item>1
    })
    newArr //2,3

    map()

    var newArr =arr.map(function(ietm,index){
    return item*2;
    })
    newArr //2,4,6

    归并方法

    *reduce
    *reduceRight
    两者区别在于从哪端开始遍历数组

    reduce()接受四个参数:前一个值,当前值,索引数组对象

    var arr=[1,2,3]
    var newArr = arr.reduce(function(prev,cur,index,array){
    retnrn prev + cur
    });
    newArr //6
    函数的返回值会作为是一个参数(prev),传递给下一项

    END...

  • 相关阅读:
    pandas
    高性能的异步爬虫
    组件推荐Forloop.HtmlHelpers 用来实现MVC的js加载顺序
    MVC 表单防伪,自定义提示(AntiForgery.Validate)
    Dapper 多表(三表以上)查询小技巧
    layui记录
    java websocket中的ping-pong 机制
    图像读取Exif小知识,图像扶正,还原拍摄时的角度
    关于人脸识别引擎FaceRecognitionDotNet的实例
    .NET的关于人脸识别引擎分享(C#)
  • 原文地址:https://www.cnblogs.com/V-JACK/p/5276816.html
Copyright © 2011-2022 走看看