一. 数组循环
常用的4种循环方式,for;for-in;??forEach;? ? for-of
const arr = ['a', 'b', 'c'];
// for 循环
for (let index=0; index < someArray.length; index++) {
const elem = someArray[index];
// ···
}
// for-in 循环
for (const key in someArray) {
console.log(key);
}
// forEach 循环
someArray.forEach((elem, index) => {
console.log(elem, index);
});
// for-of 循环
for (const elem of someArray) {
console.log(elem);
}
?推荐使用:for-of
1、可以使用break,continue,return进行终止循环
2、for-of 不仅可以遍历数组,还可以遍历可迭代对象,例如遍历 Map:
const myMap = new Map()
?.set(false, 'no')
?.set(true, 'yes')
;
for (const [key, value] of myMap) {
?console.log(key, value);
}
3、同样可以与原生的for循环一样访问数组索引
? ? ?数组方法 .entries() 返回一个可迭代的 [index,value] 对。如果使用 for-of 并使用此方法进行解构,可以很方便地访问数组索引:
const arr = ['chocolate', 'vanilla', 'strawberry'];
for (const [index, elem] of arr.entries()) {
console.log(index, elem);
}
// Output:
// 0, 'chocolate'
// 1, 'vanilla'
// 2, 'strawberry'
二. 数组过滤,filter
var arr = [{id:1, flag:true},{id:2,flag:false},{id:3, flag:true}]
// 筛选出所有的flag为false的对象
var newArr = arr.filter(obj => !obj.flag);
值得一提的是filter方法不会改变原数组,而是返回一个新的数组!!!.
三. 判断数组中是否存在某个值
1、通过filter,some
// filter通过过滤,返回一个新的数组
array.filter(e=>e==x).length > 0
// some通过条件遍历,返回一个布尔值
array.some(e=>e==x)
2、array.indexOf,返回下标(缺点是只能检查是普通类型的数据数组)
// 输出0
[1, 2, 3].indexOf(1);
// 输出1
["foo", "fly63", "baz"].indexOf("fly63");
// 输出-1
[1, 2, 3].indexOf(4);
3、array.includes,返回布尔值(缺点是只能检查是普通类型的数据数组)
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
它还接受可选的第二个参数fromIndex:
|