数组常见的循环:
1,array.map:返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
例子:.map((item, index) => {return { ...item,index: index + 1} }) || .map(_ => _.id)
2,array.filter:返回一个新数组,包含了符合条件的所有元素,如果没有符合条件的则返回空数组。
例子:.filter(_ => !_.children)
3,array.find()方法用于查找数组中符合条件的第一个元素, 如果有就返回满足条件的第一个元素,如果没有符合条件的元素,则返回undefined。
例子:.find(it => it.name=== '1')
4,array.findIndex()方法用于查找数组对象中符合条件的元素,返回索引,若没有符合条件的元素则返回-1。
例子:.findIndex(item=>item.id==='1')
5,array.includes()方法用来判断一个数组是否包含一个指定的值,如果包含返回 true,不包含返回false。
举例:['1', '2'].includes(type) 或者用some: ['1', '2'].some(_ => _ === type)
6,array.every()
方法用于检测数组所有元素是否都符合指定条件,如果所有元素都满足条件则返回true,如果检测到有一个元素不满足,则返回false,剩余元素不会再执行检测。
7,array.some()
方法用于检测数组中的元素是否满足指定条件,如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测,如果没有满足条件的元素,则返回false。
8,array.reduce() 方法可以用来做数组去重,累加,统计数显次数,比较大小等;reduce方法接收一个回调函数和初始值:array.reduce(callback,初始值) 即 array.reduce((prev, cur,index,array) => { },value)
举例:
// prev:累加值;cur:没有初始值,取数组第二个的值,有初始值取数组第一个值;index:当前索引;array:当前数组;
const newDates = dates.reduce((acc, item) => {
acc[item] = '123'
return acc
}, {})
9,比较for循环和forEach循环:
for (let i = 0; i < arr.length; i++) { ... }
| arr.forEach((element, index, array) => { ... })
遍历顺序:按照数组元素的索引顺序遍历 | 按照数组元素的添加顺序遍历
可变性: 可以修改数组元素 | 不能修改数组元素
中断遍历: 可以使用 break
语句中断遍历 | 不能使用 break
语句中断遍历
返回值:无返回值 | 无返回值
用法:适用于需要对数组元素进行逐个处理的情况 | 适用于需要对数组元素进行遍历,但不需要修改数组元素的情况
10,indexOf()
方法:
(1),数组调用:返回数组中某个指定的元素位置,返回其首个匹配项的索引。返回-1则为未找到,所以一般判断条件为array.indexOf(a)>-1则为array数组中存在a字段,或者用array.indexOf(a)!==-1。
(2),字符串调用:返回某个指定的字符串值在字符串中首次出现的位置,返回-1则为未找到。
indexOf()方法并不适用于复杂数组匹配,如果是对象型数组,则需要用some()方法,
数组其他方法:
(1),array.slice(0, -3)
用于截取数组,返回一个新的数组,不会对原数组产生影响,
(2),array.splice(index, 1)
(从何处添加/删除元素,删除多少位元素,要添加到数组的新元素):用于添加或删除数组中的元素。返回值是一个新数组,里面就是你截取出来的数据。
(3),array.join(',')
数组转字符串;相反string.split() 用于将字符串转数组,array.toString()也可以实现数组转字符串;
(4),push()末尾添加和unshift()首部添加,返回值是新数组的长度,而pop()末尾移除和shift()是首项移除元素,返回的是删除的数组。