zoukankan      html  css  js  c++  java
  • 对js数组中的简单理解

    对js数组中的简单理解

    一、检测数组

    1、instanceof

    if(value instanceof Array){
    }
    

    2、Array.isArray()

    if(Array.isArray(value)){
    }
    

    迭代器方法:
    Array原型上有三个方法检测数组内容

    1、key() 数组索引

    2、value() 数组值

    3、 entries() 数组索引加值

    二、复制和填充

    ES6新增了两个方法:批量复制的fill()、填充数组的copyWithin()

    1、fill()

    Array.fill(‘填充值','填充索引)

    可以向数组中插入全部或部分相同的值。开始索引用于指定开始填充的位置,是可选的。如果不提供索引,则重头开始一直填充到数组末尾。

    填充索引为负数时,则重数组末尾开始计算。

    2、copyWithin()

    按照指定范围浅复制数组中的部分内容,然后插入指定索引开始的位置

    let ints=[0,1,2,3,4,5,6,7,8,9]

    //从索引零开始位置复制内容,插入到索引到五的位置

    ints.copyWitnin(5); //[0,1,2,3,4,0,1,2,3,4]

    //从索引为5的位置开始复制,一直复制到结尾,插入到索引为0的位置

    ints.copyWithin(0,5) //[5,6,7,8,9,5,6,7,8,9]

    //从索引为0的位置复制到索引为3位置的内容,插入到索引为4的位置

    ints.copyWithin(4,0,3)//[0,1,2,3,0,1,2,7,8,9]

    三、转换方法

    toLocaleString()、toString()、valueOf()

    toString():返回由数组每个值等效字符串拼接成的一个逗号分隔的字符串,数组每个值都会调用其toString方法。

    valueOf():返回的是数组本身

    toLocalString()和toString()差不多,区别是前者数组中的每个值都会调用toLocalString方法。

    四、数组中的删除增加

    一、栈方法

    关键词:尾部、栈

    pop:尾部删除

    push:尾部添加

    栈:先进后出,自然就是尾部操作

    二、队列方法

    关键词:头部、队列

    unshift:头部添加

    shift:头部删除

    队列:先进先出,头部进行操作

    五、排序方法

    一、倒序:reverse()

    let i=[1,2,3,4,5]
    console.log(i.reverse())//[5,4,3,2,1]
    

    二、升序:sort()

    升序和倒序同理。

    升序也可以做数组查重的方法之一。

    sort(a,b)=>a<b?1:a >b?-1:0

    上面的写法可以变成大到小的排列

    六、操作方法

    1、concat()

    作用就是连接两个数组

    let a=[1,2,3]
    let b=[4,5,6]
    let c=[]
    c=a.concat(b)
    console.log(c)//[1,2,3,4,5,6]
    

    2、slice()

    会创建一个新数组,不会改变旧数组的内容

    slice(),会接收一个或者两个参数。

    当只有一个参数的时候,slice()会返回该索引到数组末尾的所有元素

    let a=[1,2,3,4]
    console.log(a.slice(1))//[2,3,4]
    

    当有两个参数的时候,slice()会返回从开始的索引到结束的索引对应的所有元素,注意:不包括结束索引对应的元素。相当于这种感觉[开始,结束)

    let a=[1,2,3,4,5,6]
    console.log(a.slice(1,4))//[2,3,4]
    

    3、最强大的数组方法 splice()

    会改变原数组的内容

    三种功能 删除、插入、替换

    删除:需要传两个参数,第一个是开始的位置,第二个是这个位置后的数量

    image-20210530104819266

    image-20210530105158652

    插入:需要穿三个参数,第一个是开始的位置,第二个是位置后的数量,第三个是内容

    image-20210530105122676

    image-20210530105137345

    替换:需要穿三个参数,第一个是开始的位置,第二个是位置后的数量,第三个是内容

    image-20210530105540083

    image-20210530105555757

    七、搜索和位置方法

    两种方法:严格相等搜索法、断言函数搜索法

    严格相等搜索法:

    indexOf()、lastIndexOf()、includes()

    这些方法都接收两个参数,查找的元素、开始的位置

    indexOf()、lastIndexOf() 都返回要查找元素在数组的位置,没找到就返回-1

    image-20210530110814898

    image-20210530110826259

    返回的都是索引

    include()是ES7中的方法,可以用来判断某个元素该数组中存在没有

    断言函数:

    断言函数返回的值决定相应的索引的元素是否被认为匹配

    三个参数:元素、索引、元素本身。元素是当前在数组中搜索的元素,索引是当前元素的索引、数组是正在搜索的数组。返回值为布尔值。

    find()、findIndex()

    前者返回的是匹配的元素,后者返回的是元素的索引

    都从最小索引开始搜索

    当找到匹配项后,不会再继续进行查找

    八、迭代方法

    every()、filter()、forEach()、map()、some()

    every()相当于数学关系中的且关系

    some() 相当于数学关系中的或关系

    filter()和forEach()相似,前者是创建了一个新数组去操作,后者是在原有的数组上去操作。

    可用来进行数组去重。可看我另一篇博客

    九、归并方法

    reduce() 、reduceRight()

    都会迭代所有的项,并且在此基础上给出一个最终的返回值。

    reduce()从数组的第一项返回到最后一项,reduceRight()相反

    都有四个参数:上一个归并值、当前项、当前项索引、数组本身

    可用reduce()进行数组的累加操作

    image-20210530114033809

    image-20210530114041404

  • 相关阅读:
    1951: [Sdoi2010]古代猪文
    BZOJ 1911: [Apio2010]特别行动队[斜率优化dp]
    BZOJ 2038: [2009国家集训队]小Z的袜子(hose)&&莫队算法
    gdb命令整理
    1833: [ZJOI2010]count 数字计数
    1227: [SDOI2009]虔诚的墓主人
    P3197 [HNOI2008]越狱
    3505: [Cqoi2014]数三角形
    P3414 SAC#1
    3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛
  • 原文地址:https://www.cnblogs.com/AFBF/p/14827572.html
Copyright © 2011-2022 走看看