学习js数据结构与算法-数组(4)

88 阅读3分钟

「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」。

个人觉得要想进大厂,就必须学习了解算法和数据结构,经历了多次面试之后,也知道了算法和数据结构的重要性,所以,我也打算从今天开始,进入学习,下载了一下电子书,边看书,边跟着书的例子来敲一下代码,下面就开始总结一下对算法和数据结构的学习吧。

第五天:继续了解数组

我们已经学过了 push、pop、shift、unshift 和 splice 方法。下面我们继续学习数组剩余的一些方法

  • concat

    这个方法可以链接两个或更多的数组,并返回结果

    const a = 1;
    const arr1 = [2,3,4]
    const arr2 = [5,6,7]
    const result = arr1.concat(a, arr2) // [2, 3, 4, 1, 5, 6, 7]
    

    concat 方法可以向一个数组传递任意类型(数组、对象或是元素...)。数组会按照该方法传入的参数顺序 连接指定数组,在上面的例子中,就传入了基础数据类型1和另一个数组

  • join

    将所有的数组元素连接成一个字符串,join有一个参数。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。

    arr1.join('#')
    

    就比如上面这个,以#分割数组,组成字符串,最后的输出就是2#3#4

  • indexOf

    返回第一个与给定参数相等的数组元素的索引,没有找到则返回-1

    arr1.indexOf(3)
    

    上面的数组里面有3,可以知道,3在数组的第二个元素,它的索引是2,所以最后返回的2

  • lastIndexOf

    返回在数组中搜索到的与给定参数相等的元素的索引里最大的值

    arr1.lastIndexOf(3)
    

    上面这函数其实和indexOf的方法是一致的,只是它从数组的最大索引开始往前找,返回的值还是2

  • reverse 颠倒数组中元素的顺序,原先第一个元素现在变成最后一个,同样原先的最后一个元素变成了现在 的第一个,返回改变后的数组的值

    arr1.reverse()
    

    reverse就是调转数组的顺序,要注意的是,这个方法会改变原来的数组,所以使用的时候得考虑到,所以上面的返回值是[4,3,2]

  • toString

    将数组作为字符串返回

    arr1.toString()
    

    这个和join方法有共同的功能,但是,join更灵活一点,toString并不能传参数,只能是以逗号链接元素,返回字符串,所以上面的返回值是2,3,4

  • valueOf

    和 toString 类似,将数组作为字符串返回,valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。

    arr1.toString()
    

    上面的返回值是2,3,4

  • slice

    传入索引值,将数组里对应索引范围内的元素作为新数组返回,slice和splice其实有一点点像,slice不会改变原数组,它只有两个参数,一个是开始的索引,一个是结束的索引。

    如果参数是负数,则会返回 数组的长度加负数的参数

    const arr3 = [1,2,3,4,5,6]
    // 都是正数
    arr3.slice(3,4) // [4]
    // 都是负数
    arr3.slice(-3, -1) // [4, 5]
    // 不传第二个参数
    arr3.slice(3) // [4,5,6]
    

    第一个,索引从3开始,包含3,结束为4,不包括4,所以返回的是4

    第二个,索引从-3+6=3开始,结束为-1+6=5结束,不包括5,所以返回[4,5]

    第三个,如果不传第二个参数,则从3开始,到最后,包含最后的,所以返回[4,5,6]