加载中...

数组(array)方法


数组的方法

1.map

遍历数组,返回回调返回值组成的新数组

示例

var array1 = [0, 'z', true, 3, 'a'] //先定义一个数组

var str = array1.map((i, index, arr) => {

     console.log(i + '--') // 0-- z-- ...
 
      console.log(index + '++') // 0++ 1++ ...
 
     console.log(arr) // [ 0, 'z', true, 3, 'a' ]
 
     return i
 
}, this)

console.log(str) //结果为 [ 0, 'z', true, 3, 'a' ]

参数

i: 遍历过程的每一项
index: 遍历序号(索引值)
arr: 原数组;

需要一个返回值,并返回一个新的数组,存在一个映射关系,并且不会改变原数组,不会对空数组进行检测。

2. forEach

无法 break ,可以用 try/catch 中 throw new Error 来停止

3.filter

过滤some : 有一项返回 true ,则整体为 true
示例

var array1 = [0, 'z', true, 3, 'a'] //先定义一个数组

var str = array1.filter ((i, index, arr) => {

     console.log(i + '--') // 0-- z-- ...
 
      console.log(index + '++') // 0++ 1++ ...
 
     console.log(arr) // [ 0, 'z', true, 3, 'a' ]
 
     return i
 
})

console.log(str) //结果为 [ 0, 'z', true, 3, 'a' ]

参数

i: 遍历过程的每一项
index: 遍历序号(索引值)
arr: 原数组;

需要一个返回值,并返回一个新的数组,存在一个映射关系,并且不会改变原数组,不会对空数组进行检测。

简单查询数组的奇数:

var array1 = [0, 2, 6, 3, 8, 9] //先定义一个数组
var str = array1.filter((i, index, arr) => {
      if (i % 2 !== 0) {
            return i
      }
})
console.log(str) //结果为 [ 3, 9 ]

4. every / some

针对数组中的每一个元素进行比对,只要有一个元素比对结果为false则返回false,反之要所有的元素比对结果为true才为true
简洁的说:有一项返回 false ,则整体为 false
示例:

var array1 = [3, 2, 6, 3, 8, 9] //先定义一个数组

   var one = array1.every((i) => {
     return i < 7
   })
   
   var two = array1.every((i) => {
     return i > 1
   })
   
console.log(one) // 返回 false
console.log(two) // 返回 true

some方法的使用和every一样,字面意思:every表式每一个通过才通过,而some表式一个通过就可以通过,全部不通过则返回false
示例:

var array1 = [3, 2, 6, 3, 8, 9] //先定义一个数组

    var one = array1.some((i) => {
      return i > 10
    })

    var two = array1.some((i) => {
      return i > 1
    })

console.log(one) // 返回 false
console.log(two) // 返回 true

5. join

通过指定连接符生成字符串
示例:

var arr = ['A', 'E', 'I', 'O', 'U'] //定义数组

console.log(arr.join('')) // 输出:AEIOU

console.log(arr.join(' -- ')) // 输出:A -- E -- I -- O -- U

console.log(arr.join(' * ')) // 输出:A * E * I * O * U

6. push / pop

末尾添加和删除,改变原数组, 返回添加/删除

7. unshift / shift

头部添加和删除,改变原数组,返回添加/删除

8. sort(fn) / reverse

排序与反转,改变原数组

9. concat

连接数组,不影响原数组, 浅拷贝

10.slice(start, end)

返回截断后的新数组,不改变原数组

参数解析

start:必需,从原数组的start位置开始截取(包括下标为start的元素)。start为负数,表示从尾部开始截取。如-1表示最后一个元素,-2表示倒数第二个元素

end:可选,截取到的指定位置(不包括下标为end的元素)。没有指定,则截取到最后一个元素。end要大于start,否则截取不到元素

11. splice(start,number,value…)

返回删除元素组成的数组,value 为插入项,改变原数组

参数

start:必需。整数,指定在什么位置添加/删除项目,使用负值指定从数组末尾开始的位置。
number:可选。要删除的项目数。如果设置为 0,则不会删除任何项目。
value:可选。要添加到数组中的新项目,可以有很多。

12. indexOf / lastIndexOf(value, fromIndex)

查找数组项,返回对应的下标

参数

value:必需。规定需检索的字符串值。
fromindex:可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 (当前数组).length - 1。如省略该参数,则将从字符串的首字符开始检索。

返回 value的第一次出现的位置

  • indexOf() 方法对大小写敏感!
  • 如果要检索的字符串值没有出现,则该方法返回 -1。

lastIndexOf的使用域indexOf相反,从最后出现的位置)出现某个字符或字符串的首个字符索引值,没有匹配的则返回-1

13. reduce / reduceRight(fn(prev, cur) ,defaultPrev)

两两执行,prev 为上次化简函数的return 值,cur 为当前值(从第二项开始)

用于累加

示例:

var array1 = [3, 2, 6, 3, 8, 9] //先定义一个数组

var total = array1.reduce((e, i) => {

   return e + i;
   
}, 0);

console.log(total); // 输出:31

参数:

参数一:callback(fn)回调函数

回调函数参数1:累计器累计回调的返回值; 它是上一次调用回调时返回的累积值
回调函数参数2:数组中正在处理的元素(每一项)。
回调函数参数3:index,可选: 数组中正在处理的当前元素的索引。 如果提供了第二个参数,则起始索引号为0,否则从索引1起始。
回调函数参数3:可选,调用reduce()的原数组

参数二:defaultPrev:作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。


文章作者:
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 !