首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

array.push在forEach循环内不工作

在JavaScript中,array.push是用于向数组末尾添加一个或多个元素的方法。然而,在使用array.push方法时,需要注意在forEach循环内部使用它可能会导致意外的结果。

forEach是一个用于遍历数组的方法,它会对数组中的每个元素执行提供的回调函数。然而,forEach方法是同步执行的,而array.push方法是异步执行的。这意味着,在forEach循环内部使用array.push方法时,可能会出现以下问题:

  1. 顺序问题:由于array.push是异步执行的,循环内部的array.push操作可能会在循环结束后才执行,导致元素的添加顺序与预期不符。
  2. 重复问题:如果在forEach循环内部使用array.push方法向数组中添加元素,循环可能会多次遍历数组,导致元素被重复添加。

为了解决这个问题,可以使用其他方法来替代forEach循环内部的array.push操作。以下是一些可能的解决方案:

  1. 使用map方法:map方法会创建一个新数组,其中包含对原始数组中的每个元素应用提供的回调函数后的结果。通过在map方法中返回需要添加的元素,可以避免使用array.push方法。
代码语言:txt
复制
const newArray = originalArray.map(item => {
  // 在这里返回需要添加的元素
});
  1. 使用reduce方法:reduce方法会将数组中的每个元素按照提供的回调函数进行累积计算,并返回最终结果。通过在reduce方法中将需要添加的元素累积到一个新数组中,可以避免使用array.push方法。
代码语言:txt
复制
const newArray = originalArray.reduce((accumulator, item) => {
  // 在这里将需要添加的元素累积到accumulator中
  return accumulator;
}, []);

总结起来,为了避免在forEach循环内部使用array.push方法导致的问题,可以考虑使用mapreduce方法来替代。这样可以确保元素的添加顺序和次数符合预期。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • VBA: 工作簿复制用户窗体

    文章背景:Excel中,创建完一个用户窗体(Userform)后,有时想要在此基础上,创建针对另一场景的用户窗体。那么,如何在工作簿复制用户窗体呢?下面介绍两种办法。...方法二: 将用户窗体移到新工作簿,然后再将该用户窗体移回原工作簿。为避免移入错误,移入前,需要修改新工作簿用户窗体的名称。具体步骤如下: (1)新建一个启用宏的工作簿(*.xlsm)。...(2)选中需要复制的用户窗体,将该窗体拖动到新工作簿。 (3)修改新工作簿用户窗体的名称,避免移入窗体时,出现同名窗体已存在的错误。...(4)将新工作簿的用户窗体拖动到原工作簿。 视频演示:http://mpvideo.qpic.cn/0bf2suaaaaaatqal5kdw5fqvbfodackqaaaa.f10002.mp4?

    1.4K20

    为什么建议 for 循环里捕捉异常?

    回答标题这个问题之前,我们先试想一下,没有 try…catch 的情况下,如果想要对函数的异常结果进行判断,我们应该怎么做?...,意思是结构优雅的代码不应该被执行,于是一个适用于 Java 的异常处理机制便应运而生了。...单独捕获异常 探究将异常捕获与循环结合起来之前,我们先看一下单独捕获一个异常会发生什么?...如果异常抛出时 PC 计数器所指向的行数正好落在异常表中某一条目包含的范围, 并且所抛出的异常正好是异常表中 type 列所指定的异常(或者所指定异常的子类), 那么 JVM 就会将 PC 计数器指向...最后 本文从异常出发,分析了单独捕获异常和将异常与 for 循环结合的几种不同的情况,然后通过 JMH 进行了一次测试,最终验证我们标题所说的,建议 for 循环里捕捉异常。

    2.2K10

    为什么建议matlab中用循环?【文末有彩蛋】

    循环是程序流程控制的三大剑客之一,没有循环可以说好多功能都不能实现。...MATLAB作为一种特殊的编程语言,其循环的优化上并不是特别出色,但在矩阵化运算(也称矢量化运算)上具有较其他编程语言不可比拟的优势。...为了比较matlab中for循环与向量化运算的差别,在此做一个小实验,实验过程如下: matlab中计算1000到10000大小的矩阵相乘,为了节约时间,以500为矩阵大小的步长。...每一个尺度下,进行十次重复计算然后平均计算时间。下图不同矩阵大小与计算所花时间的关系图,以及不同矩阵大小与for循环所花时间和向量化计算时间之比: 图1. 不同矩阵大小与计算所花时间 图2....不同矩阵大小与for循环所花时间和向量化计算时间之比 从图中不难发现,MATLAB中矢量化计算比for循环计算显著的优势,尤其时当矩阵尺度较大时,矢量化计算的优势越明显。

    1K10

    为什么建议把数据库部署docker容器

    前言 近2年Docker非常的火热,各位开发者恨不得把所有的应用、软件都部署Docker容器中,但是您确定也要把数据库也部署的容器中吗?...即使你要把 Docker 数据放在主机来存储 ,它依然不能保证丢数据。Docker volumes 的设计围绕 Union FS 镜像层提供持久存储,但它仍然缺乏保证。...(3)合理布局应用   对于IO要求比较高的应用或者服务,将数据库部署物理机或者KVM中比较合适。目前TX云的TDSQL和阿里的Oceanbase都是直接部署物理机器,而非Docker 。...云简化了虚拟机操作和替换的复杂性,因此不需要在夜间或周末没有人工作时间来测试新的硬件环境。当我们可以迅速启动一个实例的时候,为什么我们需要担心这个实例运行的环境? ?...因为数据匹配,新实例不会与现有的实例兼容,如果要限制实例使用单机服务,应该让 DB 使用非容器化环境,我们仅仅需要为计算服务层保留弹性扩展的能力。

    5.6K30

    为什么建议把数据库部署Docker容器

    针对数据库是否适合容器化这个问题,不同的人可能会给出不同的答案,回答此问题之前我们先看下容器化部署数据库和常规数据库部署上的一些比较。...即使你要把 Docker 数据放在主机来存储 ,它依然不能保证丢数据。Docker volumes 的设计围绕 Union FS 镜像层提供持久存储,但它仍然缺乏保证。...(3)合理布局应用 对于IO要求比较高的应用或者服务,将数据库部署物理机或者KVM中比较合适。目前TX云的TDSQL和阿里的Oceanbase都是直接部署物理机器,而非Docker 。...云简化了虚拟机操作和替换的复杂性,因此不需要在夜间或周末没有人工作时间来测试新的硬件环境。当我们可以迅速启动一个实例的时候,为什么我们需要担心这个实例运行的环境?...因为数据匹配,新实例不会与现有的实例兼容,如果要限制实例使用单机服务,应该让 DB 使用非容器化环境,我们仅仅需要为计算服务层保留弹性扩展的能力。

    95820

    为什么建议把数据库部署Docker容器

    这个问题不是子虚乌有,因为在网上能够找到很多各种操作手册和视频教程,小编整理了一些数据库不适合容器化的原因供大家参考,同时也希望大家使用时能够谨慎一点。...即使你要把 Docker 数据放在主机来存储 ,它依然不能保证丢数据。Docker volumes 的设计围绕 Union FS 镜像层提供持久存储,但它仍然缺乏保证。...(3)合理布局应用   对于IO要求比较高的应用或者服务,将数据库部署物理机或者KVM中比较合适。目前TX云的TDSQL和阿里的Oceanbase都是直接部署物理机器,而非Docker 。...云简化了虚拟机操作和替换的复杂性,因此不需要在夜间或周末没有人工作时间来测试新的硬件环境。当我们可以迅速启动一个实例的时候,为什么我们需要担心这个实例运行的环境?...因为数据匹配,新实例不会与现有的实例兼容,如果要限制实例使用单机服务,应该让 DB 使用非容器化环境,我们仅仅需要为计算服务层保留弹性扩展的能力。

    1.3K10

    为什么建议把数据库部署docker容器

    即使你要把 Docker 数据放在主机来存储 ,它依然不能保证丢数据。Docker volumes 的设计围绕 Union FS 镜像层提供持久存储,但它仍然缺乏保证。...(3)合理布局应用   对于IO要求比较高的应用或者服务,将数据库部署物理机或者KVM中比较合适。目前TX云的TDSQL和阿里的Oceanbase都是直接部署物理机器,而非Docker 。...知识点: Docker 中水平伸缩只能用于无状态计算服务,而不是数据库。...云简化了虚拟机操作和替换的复杂性,因此不需要在夜间或周末没有人工作时间来测试新的硬件环境。当我们可以迅速启动一个实例的时候,为什么我们需要担心这个实例运行的环境?...因为数据匹配,新实例不会与现有的实例兼容,如果要限制实例使用单机服务,应该让 DB 使用非容器化环境,我们仅仅需要为计算服务层保留弹性扩展的能力。

    3K00

    Java 中为什么推荐 while 循环中使用 sleep()

    前言最近逛 CSDN 看到一篇文章,文章大意是说为什么循环推荐使用 sleep 操作,原因在于线程挂起和唤醒会有很大的性能消耗,并推荐使用 Timer 及 ScheduledExecutorService...// do something }}上面的代码你可能会得到下面的警告:Call to ‘Thread.sleep()’ in a loop, probably busy-waiting// 循环中调用...sleep 可能会导致忙等待 // 如 FLAG 变量状态未改变 那么线程可能一直循环,并不断进行线程挂起和唤醒原因是否正确主要原因和原文博主所说有很大的关系但不完全正确:我们都知道 Java 线程实际对应着操作系统中的一个线程...方案是否合理记住一点,讨论方案永远不能脱离场景,没有一种方案可以适应所有的场景,我们永远只是探讨适合当前场景的方案。... Java AQS 等待获取锁和线程池任务为空等待新任务时,会使用等待和唤醒操作轮询机制 和 等待和唤醒 一般会结合使用,避免线程频繁的挂起和唤醒。

    1.2K30

    017:为什么建议循环中使用“+”拼接字符串

    如果要使用循环构建一个大的字符串,推荐使用StringBuilder代替String,使用StringBuilder的append()方法进行字符串连接,并在循环结束后将StringBuilder对象转为...:第9行的时候做条件判断,如果不满足循环条件,则跳转到42行。...编译器做了一定程度的优化,12行new了一个StringBuilder对象,然后再20行、24行、29进行了三次append方法的调用,不过重点是,每次循环都会new一个StringBuilder对象...,可以看出,第4行(循环体外)就构建好了StringBuilder对象,然后再循环体内只进行append()方法的调用。...这就从字节码层面解释了为什么建议循环体内使用“+”执行字符串的拼接。 参考资料 《Effective Java(第二版)》 《Java编程思想》

    1.3K10

    VBA实用小程序61: 文件夹所有文件中运行宏工作簿所有工作表中运行宏

    学习Excel技术,关注微信公众号: excelperfect 文件夹中所有文件上运行宏,或者Excel工作簿中所有工作表上运行宏,这可能是一种非常好的Excel自动化方案。...文件夹所有文件中运行宏 代码如下: '本程序来自于analystcave.com Sub RunOnAllFilesInFolder() Dim folderName As String...3.使用要在每个打开的工作簿上运行的代码替换“在这里放置你的代码”部分。 4.每个打开的工作簿关闭时不会保存所作的修改。...子文件夹所有文件中运行宏 当想在文件夹中所有Excel文件上运行宏时,其中的一种情况是遍历所有子文件夹来运行宏。..." End Sub 工作簿所有工作表中运行宏 代码如下: '本程序来自于analystcave.com Sub RunOnAllWorksheets() Dim folderName As String

    4.7K11

    公司制度规范的情况下,如何做好测试工作

    首先我要说,公司目前制度规范,对我们来说是个机遇,绝对是个机遇! 遇到这个好机会你还在等什么?如果说这个公司已经足够好了,那他还请你过来做什么?你的能力还足以让公司有更高的提升么?...我们的选择要么改变自己要么改变别人,千万不要一方面抱怨公司,另一方面还赖公司走,那是最令人鄙视的人生了! 二、对于已经做管理层,有机会改变公司现状的,那恭喜你。...如果要,那恭喜,你一定要得到尚方宝剑,特别是对于比较国企话的公司,否则出师无名,人家拽你。如果上面没这个要抓测试提高质量的目的,你怎么办?跟上面忽悠呗!...问他们对今后的测试有啥意见,他们想怎么搞,然后,好,跟他们交换思路,把你的大致想法讲给他们听,看看他们什么意见,肯定会有很多好意见的,因为人家也想趁着这个机会提高质量少给自己以后的工作找麻烦。...这个过程可能需要经过2轮,因为要将自己修改后的东西和别人沟通么。

    1.2K30

    JS中的那些循环

    一、forEach定义一个函数, 数组的普通循环遍历, 并为每个数组元素执行一次传入的callback/** * @param {*} element 当前处理元素 * @param {number}...const a = [1, 2];a.forEach((v, i, array) => { array.push(a.length); console.log(`index ${i}: v-${v}..., 则后续的遍历值会发生变化遍历中对数组已有值重新赋值, 可以看到访问内容已经改变const a = [1, 2];a.forEach((v, i, array) => { console.log(...new intance: ${JSON.stringify(intance)}`);// a = 1// b = 22// new intance: {"a":1,"b":22,"d":4} 6、 建议用于遍历数组..., 下面一张表格对他们进行不同维度的对比五、循环对比功能对比类型目标类型是否可中断返回值forEach函数数组否undefinedfor...in表达式非Symbol可枚举属性是无for...of表达式对可迭代对象是无

    2K10

    ES6数组常用方法总结

    一、常规数组循环 let arr = [1,2,3]; for(let i = 0;i<arr.length;i++){ //条件判断或操作数组 return ; 可以return 值 }...二、ES6数组方法 1、array.forEach() 循环遍历数组中的每一项 let arr = [1,2,3] array.forEach((item,index)=>{ //数组操作...不能return 值 }) 2、array.map() map方法和forEach每次执行匿名函数都支持3个参数,参数分别是item(当前每一项)、index(索引值)、arr(原数组),但是...和map就不行了,可以用一般的for循环实现,或者用array.every()或者array.some(); (1)array.some() 类似于或 some()方法用于检测数组中的元素是否有满足条件的...((array,item)=>{ array.push(item.name) return array;; },[ ]) 结果 result 为[‘张三’,‘李四’] 后续还待补充 发布者:

    33010
    领券