1.for of 方法
①可以获取数组元素的键值
②无法获取元素的下标(不能记录数组下标)
③可以使用break,return,continue跳出循环
④在循环中执行同步任务,是串行执行(如:循环执行2次耗时为1s的同步任务,总耗时为2s)
const check = arr => {
for (let i of arr) {
if (i.children) {
return check(i.children);
} else {
console.log(i);
}
}
};
let arr1 = [1, 2, 3, { children: ['子-1', '子-2'] }, 4, 5, 6];
check(arr1);
输出结果:
2.forEach()
①三个参数分别是:某项元素的键值,元素的索引,数组本身
②不能使用break,return,continue跳出循环
③没有返回值
④可以记录索引
⑤在循环中执行同步任务,任务会被并行执行(类似promise.all),同步任务返回顺序和执行顺序相同(例:循环执行2此耗时为1s的同步任务,总耗时为1s)
const check = arr => {
arr.forEach(i => {
if (i.children) {
return check(i.children);
} else {
console.log(i);
}
});
};
let arr1 = [1, 2, 3, { children: ['子-1', '子-2'] }, 4, 5, 6];
check(arr1);
输出:
3.map()
①三个参数分别是:某项元素的键值,元素的索引,数组本身
②不能使用break,return,continue跳出循环
③返回一个新数组
④可以记录索引
⑤在循环中执行同步任务,任务会被并行执行(类似promise.all),同步任务返回顺序和执行顺序相同(例:循环执行2此耗时为1s的同步任务,总耗时为1s)
3.Array.from()
该方法可以将两类对象转换成真正的数组:
①类似于数组的对象(操作dom返回的dom集合nodeList,以及函数内部的arguments对象)(本质特征是具有length属性)
②部署了iterator的数据结构(set map结构。。。)
注意:
①使用拓展运算符也可以将部署了iterator的数据结构转换成数组 var array = [...set]
4.Array.of()
构造函数Array()会在参数个数不同时,发生重载:
当只有一个参数时,该参数指定的是数组的长度。 Array(3)
不少于两个参数时,才会返回又参数组成的新数组
Array函数返回的都是又参数组成的新数组,没有参数时候,就返回[ ]
5.Array.some((item,index,array)) item:当前元素,index: 元素索引 array:当前元素属于的数组对象
some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
some() 方法会依次执行数组的每个元素:
- 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
- 如果没有满足条件的元素,则返回false。
some() 不会对空数组进行检测。
some() 不会改变原始数组。
6.Array.every((item,index,array)) item:当前元素,index: 元素索引 array:当前元素属于的数组对象
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
every() 方法使用指定函数检测数组中的所有元素:
- 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
- 如果所有元素都满足条件,则返回 true。
every() 不会对空数组进行检测。
every() 不会改变原始数组。
7.Array.filter(item,index,array) item:当前元素,index: 元素索引 array:当前元素属于的数组对象
filter() 方法创建一个新的数组,返回数组中的满足条件的所有元素集合
filter() 不会对空数组进行检测。
filter() 不会改变原始数组。
8.array.find((item,index,array)) array.findIndex()
find()函数用来查找目标元素,找到就返回该元素,找不到返回undefined。
findIndex()函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1。
9.array.includes(value,index) index是搜索的起始位置,第二个参数可以为负数指倒数
includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。