Array 方法

101 阅读2分钟

改变原数组

push/pop/shift/unshfit

push:向数组末尾添加一个元素,并返回新的长度,这个方法类似栈中的入栈

pop:删除并返回数组的最后一个元素,这个方法类似栈中的出栈

shift:删除并返回数组的第一个元素

unshfit:向数组的开头添加一个或更多元素,并返回新的长度

splice

作用:用于删除、添加或者替换数组中的某些元素; 返回被删除或被替换元素组成的数组。返回被删除的项

  • 参数1:起始位置索引
  • 参数2:删除多少项
  • 参数3:需要添加的元素
let arr = [10, 20, 30, 40, 50, 80]
arr.splice(2, 3) // [30, 40, 50]

arr.splice(2, 3, 'jack', 'rose') // arr => [10, 20, 'jack', 'rose', 80]

sort / reverse

以上为改变原数组的7种方法,vue2.x版本实现数组响应式监听就是重写了这7种方法。

不改变原数组

concat:数组拼接

返回值:返回拼接后的数组

var a = [1,2,3]; 
var b = [4,5,6]; 
var ss = a.concat(b); // [1,2,3,4,5,6]

// concat默认只能展开一层 
var res = [30].concat([10, 15], 20, 'hello')  // [30, 10, 15, 20, 'hello']

join & toString:数组类型转换:将数组转换成字符串

var a = [1,2,3]; 
a.toString(); // '1,2,3' 

和join方法类似,不同点在于join方法可以传指定的拼接符号

a.join("-") // '1-2-3'

数组遍历

find

filter

some

作用:检测数组中的元素是否存在满足指定条件,返回布尔值

every

作用:检测数组中是否每一项都满足指定条件,返回布尔值

reduce / reduceRight

let arr = [10, 20, 30, 40]; 
let result = arr.reduce((sum, item, index) => { 
    return sum + item
}, 0)  // 100

map

forEach

indexOf / findIndex / includes

let arr = ['jack', 'zhangsan', 'lisi']

arr.indexOf('zhangsan') // 1
arr.indexOf('rose') // -1

arr.findIndex(v => v == 'zhangsan') // 1
arr.findIndex(v => v == 'rose') // -1

arr.includes('jack') // true