优秀的编程知识分享平台

网站首页 > 技术文章 正文

javascript typescript map 可以使用break吗?如何使用break!

nanyue 2025-02-08 12:15:13 技术文章 4 ℃

前言

使用过map的同学,在看到这个问题时,一定会给您一个否定的答案,不可以使用break。

那么在我们实际写代码的过程中,既然有了这么一个需求,那么证明我们确实需要这么干,所以今天我们来实现这个需求

为什么会有这么一个需求?

在这个世界中,会有公司根据代码量,来确定工作量吗?

for

假设有一组数据,我们需要通过数据中status属性,判断小说人物中,今天是否有人下山历练。

/** 历练者的名称 */
let studyUserName: string = '';
/** 记录循环次数 */
let loopCount = 0;
// 检查今天历练情况
for (let index = 0, len = datas.length; index < len; index++) {
    const element = datas[index];
    // 记录检测次数
    loopCount++;
    if (element.status) {
        // 记录历练者的名称
        studyUserName = element.name;
       // 只要有人历练了,就结束循环。
        break;
    }
}
// 显示历练者的名称
console.log(studyUserName); // 周芷若
// 显示检测了几个人
console.log(loopCount); // 3

从上面的代码中,我们看到总共4个人,只检测了3个人,就知道了周芷若下山历练了。

功能是实现了,但是代码写了一大堆。所以我们开始使用forEach,map等,来减少代码量。


forEach、map

/** 历练者的名称 */
let studyUserName: string = '';
/** 记录循环次数 */
let loopCount = 0;
// 检查今天历练情况
datas.forEach(user => {
    // 记录检测次数
    loopCount++;
    // 记录历练者的名称
    user.status && (studyUserName = user.name);
    if (user.status) {
        // break; 无法使用,只能检测所有人。
    }
})
// 显示历练者的名称
console.log(studyUserName); // 周芷若
// 显示检测了几个人
console.log(loopCount); // 4

从上面的代码中,我们看到找出了历练者,但是检测了所有人。怎么办?


some

some只要有一次返回真,就结束循环。

/** 历练者的名称 */
let studyUserName: string = '';
/** 记录循环次数 */
let loopCount = 0;
// 检查今天历练情况
datas.some(user => {
    // 记录检测次数
    loopCount++;
   // 如果有人历练了,就跳出循环。
    return user.status && (studyUserName = user.name);
})
// 显示历练者的名称
console.log(studyUserName); // 周芷若
// 显示检测了几个人
console.log(loopCount); // 3
// 精简后的代码
/** 历练者的名称 */
let studyUserName: string = '';
// 检查今天历练情况
datas.some(user => user.status && (studyUserName = user.name));
// 显示历练者的名称
console.log(studyUserName); // 周芷若

结语

所以,想在map中使用break,大概是因为for循环写的代码太多了吧,而且还容易出错。

那么以后,您可以通过使用some来实现break的功能,从此走上人生巅峰,……。


人人为我,我为人人,谢谢您的浏览,我们一起加油吧。

Tags:

最近发表
标签列表