JavaScript数据结构【数组---for...of循环迭代】

继for循环,和forEach方法迭代数组后,要想迭代数组的值还可以用for...of循环

使用:

// for...of循环示例
let array = [1, 2, 3]
for (let key of array) {
  console.log(key);
}
/*
输出:
    1
    2
    3
*/

可以看到:使用for...of循环迭代整个数组还是比较方便,方便取到值并且使用,示例所示并非仅可以迭代数组,更多可参见for...of详细指南 但是有一个问题是:

怎么拿到当前项的下标(索引)?

直接多给个参数?不行,key的位置只能容得下一个参数,装不下其他参数了;

有问题自然是有对应解决措施

1、array.keys()

方法返回一个包含数组中每个索引键的 Array Iterator 对象

let array = [10, 20, 30]
for (let key of array.keys()) {
  console.log(key);
}
/*
输出:
    0
    1
    2
*/

感受:确实是获取到了下标,但就一个下标让人有点难办,或是有什么妙用,亟待探索

更多关于数组中keys防范介绍


2、array.entries()

返回一个新的数组迭代器对象,该对象包含数组中每个索引的键/值对

let array = [10, 20, 30]
for (let key of array.entries()) {
  console.log(key);
}
/*
输出:
    [ 0, 10 ]
    [ 1, 20 ]
    [ 2, 30 ]
*/

感受:for循环表示我上我也行,直接就

确实,遍历上面示例类似的数组还是站在for循环这边的,因为这里我想到一个问题:

再看以下描述:entries()返回一个新的数组迭代器对象,该对象包含数组中每个索引的键/值对

这是不是意味着需要先对array迭代一遍,事先处理好数据(一维数组-->二维数组)得到一个新的数组,然后都这个新的数组进行迭代,最终得到示例的结果

也就是说:

for循环:迭代一遍数组,可以同时的带下标和值

for..of+entries():共迭代两遍数组,同时生成了一个新的数组

后者的时间复杂度系数相对前者来说翻了一倍,但指数未变化,然后按照复杂度分析可以忽略系数的影响,一倍的系数变化近似于没有变化,所以问题不是很大(以上分析纯属个人看法,出问题概不负责)

更多关于数组entries的介绍


3、辅助变量获取索引:

外部创建一个变量,类似于i=0,每次迭代递增,这也是下意识想到的解决办法,谈不上优雅,仅作为一种方法而存在

let i = 0;
let array = [10, 20, 30]
for (let key of array) {
  console.log(i, key);
  i++;
}
/*
输出:
    0 10
    1 20
    2 30
*/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值