js中对数组的循环和过滤

一. 数组循环

常用的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:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值