继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
*/







![[附源码]JAVA毕业设计养老院老人日常生活管理系统(系统+LW)](https://img-blog.csdnimg.cn/38f8cf45719b4f47808ac8159b4febb8.png)











