网站首页 > java教程 正文
常见使用的遍历函数
使用for-of循环(ES2015+) - 异步友好
使用forEach/some - 异步不友好(见例子)
使用for - 异步友好
几点注意
不使用map,除非你用不到循环的返回值,请注意map和forEach是有区别的,map主要用来生成一个新的数组。
异步谨慎使用forEach,如果回调做异步工作,需要forEach等待(但是forEach不会等待,而是直接到底)。
数组遍历例子
for-of (ES2015+)
用法简单直接,使用let把单个变量的范围进行限制,不会影响到循环外,而且性能优于forEach,建议遍历数组使用该函数。
const a = ["a", "b", "c"];
for (let val of a) {
console.log(val);
}
//依次打印结果 "a", "b", "c"
同时也对异步处理十分友好。
//延时
function delay(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
//异步函数打印数组内容
async function show(arr) {
for (let item of arr) {
await delay(400); //等待 forEach 则会无视 await
console.log(item);
}
}
show(["头", "条", "新", "浪", "潮"]);
//依次延时打印结果 "头" "条" "新" "浪" "潮"
forEach (ES5)
处理同步代码(不需要等待),则可以使用forEach用于在循环期间完成的异步进程。
const a = ["a", "b", "c"];
a.forEach((val) => {
console.log(val);
});
//依次打印结果 "a", "b", "c"
异步处理例子,注意与for-of的差异,将会并发运行,等同于多个子函数同步运行。
//延时
function delay(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
//异步函数打印数组内容
async function show(arr) {
arr.forEach(async (item) => {
await delay(400);
console.log(item);
});
}
show(["头", "条", "新", "浪", "潮"]);
//延时完成后,直接打印 "头" "条" "新" "浪" "潮"
for
const a = ["a", "b", "c"];
for (let i = 0; i < a.length; ++i) {
console.log(a[i]);
}
//依次打印结果 "a", "b", "c"
//性能优化版
const a = ["a", "b", "c"];
for (let i = 0, length = a.length; i < length; ++i) {
console.log(a[i]);
}
异步处理例子
//延时
function delay(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
//异步函数打印数组内容
async function show(arr) {
for (let i = 0, length = arr.length; i < length; ++i) {
await delay(400);
console.log(arr[i]);
}
}
show(["头", "条", "新", "浪", "潮"]);
//依次延时打印结果 "头" "条" "新" "浪" "潮"
- 上一篇: Java数组案例
- 下一篇: javaScript 遍历数组方法总结
猜你喜欢
- 2024-11-21 教你如何从性能角度选择数组的遍历方式
- 2024-11-21 javaScript数组的遍历操作
- 2024-11-21 全新Java入门到架构师教程之Java15数组案例实现和Arrays
- 2024-11-21 第9天|Java入门有野,数组
- 2024-11-21 java数组例子
- 2024-11-21 Java小技巧:巧用函数方法实现二维数组遍历
- 2024-11-21 C++开发者都应该使用的十个C++11特性(上)
- 2024-11-21 数组实现队列和循环队列(Java)
- 2024-11-21 java 基础之循环动态接收数组和动态输出数组
- 2024-11-21 带你从零学大数据系列之Java篇---第五章:数组
你 发表评论:
欢迎- 最近发表
-
- Java内存溢出紧急处理:10个必知的Linux命令快速定位OOM
- 面试常问的 25+ 个 Linux 命令(linux面试命令大全)
- Java堆外内存溢出紧急处理实战:Linux命令定位与Spring Boot解决
- java开发常用的Linux命令,高频的没你想象的多
- Java 应用 CPU 飙升?8 个 Linux 命令组合拳快速锁定异常线程
- Java 开发者线上问题排查常用的 15 个 Linux 命令
- Java程序员必备的Linux命令:让你的工作效率翻倍
- Java程序员必备的Linux命令全解析
- [超全整理] Java 程序员必备的 100 条 Linux 命令大全
- SAP ABAP资源导航(sap aatp)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)