js中遍历数组的方式

  1. for (let i = 0; i < arr.length; ++i)
  2. arr.forEach((v, i) => { /* ... */ })
  3. for (let i in arr)
  4. for (const v of arr)

区别:

  • for循环 和 for in 遍历的是下标。for of 访问 的是元素,forEach()可同时访问下标元素
  • 针对非数字属性for in 不会忽略,其他三个会忽略。(非数字属性就是给数组这个object 添加属性。)因此用它不好
  • 针对空元素['a',,'c']这种类型的空元素,for循环与for of不会跳过for in与forEach会跳过。对于['a', undefined, 'c']4 种循环语法一致,打印的都是”a, undefined, c”。
  • 函数的 this : for循环,for/in与for/of会保留外部作用域的this。forEach,不使用箭头函数时this指向会变化。
  • return 无效:forEach无法用break/return退出,不适合遍历查找特殊值进行返回的场景。应该用filter.

其他遍历方法:

Array.prototype.map

用法:

 const array1 = [1, 4, 9, 16];
// pass a function to map
const map1 = array1.map(x => x * 2);
console.log(map1);
// expected output: Array [2, 8, 18, 32]
console.log(array1) 
// Array [1, 4, 9, 16]

不会跳过空元素

const array1 = [1, 4,, 9, 16]; //注意这里有空元素,合法的,算在长度里了
const map1 = array1.map(x => x * 2);
console.log(map1);
console.log(array1) 
//> Array [2, 8, undefined, 18, 32]
//> Array [1, 4, undefined, 9, 16]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值