• Array API—02


    (11)indexOf() & lastIndexOf()

    ①indexOf() 方法可返回数组中某个指定的元素位置。

    该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。

    如果在数组中没找到指定元素则返回 -1。

    1 let arr = [1,2,3]
    2 let i = arr.indexOf(2)
    3 console.log(i);  // 1

     它还有第二个参数,表示开始查找的位置

    ②lastIndexOf() 方法可返回一个指定的元素在数组中最后出现的位置,从该字符串的后面向前查找。

    该方法将从尾到头地检索数组中指定元素 item。开始检索的位置在数组的 start 处或数组的结尾(没有指定 start 参数时)。如果找到一个 item,则返回 item 从尾向前检索第一个次出现在数组的位置。数组的索引开始位置是从 0 开始的。

    用法同上,这里不再写示例

    (12)join()

    join() 方法用于把数组中的所有元素放入一个字符串。

    1 let arr = [1,2,3]
    2 let str = arr.join('-')
    3 console.log(str);  // 1-2-3

    说明:

    • 分隔符不写则默认是英文逗号

    (13)map()

    map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

    map() 方法按照原始数组元素顺序依次处理元素。

    注意: 

    • map() 不会对空数组进行检测。
    • map() 不会改变原始数组。
    1 let arr = [1,2,3]
    2 let newArr = arr.map((e,i,a)=>{
    3     return e*e
    4 })
    5 console.log(newArr);  // [1,4,9]

     说明:

    • 回调的三个参数分别是:当前遍历的元素、当前元素的索引、原数组

    (14)pop() & push() & shift() & unshift()

    ①pop() 方法用于删除数组的最后一个元素并返回删除的元素。

    注意:此方法改变数组的长度!

    1 let arr = [1,2,3,4]
    2 let e = arr.pop()
    3 console.log(e);  // 4
    4 console.log(arr);  // [1,2,3]

    ②push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

    注意: 新元素将添加在数组的末尾。

    注意: 此方法改变数组的长度。

    1 let arr = [1,2,3]
    2 arr.push(4)
    3 console.log(arr);  // [1, 2, 3, 4]
    4 arr.push(7,8)
    5 console.log(arr);  // [1, 2, 3, 4, 7, 8]

    ③shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

    1 let arr = [1,2,3]
    2 arr.shift()
    3 console.log(arr);  // [2, 3]

    ④unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

    1 let arr = [1,2,3]
    2 arr.unshift(4) 
    3 console.log(arr);  // [4, 1, 2, 3]

    (15)slice()

    slice() 方法可从已有的数组中返回选定的元素。原数组不受影响

    array.slice(start, end)
    • start:
      • 可选。规定从何处开始选取。
      • 如果是负数,那么它规定从数组尾部开始算起的位置。
      • 如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
    • end:
      • 可选。规定从何处结束选取。
      • 该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。
      • 如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。

    说明:

    • 如果两个参数都不传,则相当于把原数组复制了一份(浅复制,如果包含引用类型的元素,那么复制的是地址,修改一份,另一份也会随之改变)

    (16)splice()

    splice() 方法用于添加或删除数组中的元素

    注意:这种方法会改变原始数组。

    array.splice(index,howmany,item1,.....,itemX)

    参数:

    • index:开始插入/删除的索引
    • howmany:需要删除的元素长度,0表示添加
    • item...:希望添加的元素。这里可以配合ES6的结构来使用(...)
    1 let arr = [1,2,3,4,5]
    2 arr.splice(2,1,30)  // [1, 2, 30, 4, 5]  替换元素
    3 arr.splice(2,0,30)  // [1, 2, 30, 3, 4, 5]  添加元素到指定位置

     (17)sort()

    sort() 方法用于对数组的元素进行排序。

    sort()内的参数可选。规定排序顺序。必须是函数。

    1       let arr = [3,5,4,8]
    2       arr.sort()
    3       console.log(arr);  // [3, 4, 5, 8]

     (18)toLocaleString() & toString()

    toLocaleString() 把数组转为字符串:

    1       let arr = [1,2,3,4]
    2       console.log(arr.toLocaleString());  // 1,2,3,4

    两者的作用在绝大多数情况下是相同的

     (19)reduce() & reduceRight()

    ①reduce()方法对数组中的每个元素执行一个提供的回调,将其结果汇总为单个返回值。

    reduce函数接收两个参数:

    • 一个回调callback
      • 回调函数接收4个参数:
        • Accumulator( acc 累计器)
        • Current Value(cur 当前值)
        • Current Index(idx 当前索引)
        • Source Array(arr 原数组)
    • 一个初始值 initialValue:累加会从这个初始值开始

     语法:

    arr.reduce(callback(accumulator, currentValue[, currentIndex[, arr]])[, initialValue])
    arr.reduce(callback(accumulator, currentValue, currentIndex, arr), initialValue)

     简单使用:

        let a = [1, 2, 3, 4]
    
        let s1 =a.reduce((acc,cur,idx,arr)=>{
            return acc + cv
        },0)
    
        let s2 =a.reduce((acc,cur,idx,arr)=>{
            return acc + cv
        },5)
    
        console.log(s1);  // 10
        console.log(s2);  // 15

    说明:

    • reduce里面不局限于使用+号来累加。比如可以换成*来实现乘法
    • reduce()对于空数组是不会执行回调函数的

    ②reduceRight()

    reduceRight()方法的功能和reduce()是一样的,不同的是reduceRight()从数组的末尾向前将数组中的数组项做累加。

  • 相关阅读:
    [软件工程基础]第 1 次个人作业
    [软件工程基础]个人项目 数独
    [2017BUAA软件工程]第0次个人作业
    [2017BUAA软工]第零次作业
    NoSQL-流式数据处理与Spark
    C、JAVA存储管理不同点
    数据库之一窥数据库系统
    Java单元测试-覆盖率分析报告自动生成
    Java单元测试-快速上手Junit(进阶)
    Java单元测试-快速上手Junit
  • 原文地址:https://www.cnblogs.com/codexlx/p/14309591.html
Copyright © 2020-2023  润新知