gpt4 book ai didi

javascript - 带有 If 语句的循环运行缓慢,太慢

转载 作者:行者123 更新时间:2023-12-05 06:17:39 24 4
gpt4 key购买 nike

我是 JavaScript 新手。我用它为 Adob​​e Illustrator 编写一些脚本。在这个脚本中,我选择了一些项目,并通过一些用户定义的值(xPointMin、xPointMax 等)对它们进行子选择。下面的循环是函数的主要部分。

我的问题是这个循环非常慢。这需要几秒钟。运行 50 个项目的选择。

我已经尝试过以下方法:

  1. 在没有任何 if 条件的情况下运行循环。这很快。
  2. 运行只有一个 if 条件的循环。这与所有 if 条件一样快。

有人知道为什么它这么慢还是可以让它更快。

// xArray... are extracted vales from the Selection (xSel)
// xPointMin, xPointmax, xLengthMin, xLengthMay, xAreaMin, and xAreaMax are user defined values

for (var i in xSel) { // xSel is a list of selected items
var xTF = true; // xTF is temporary variable

// points // this will check if the given value (xArrayPoint) is within the requirements
if (xArrayPoint[i] <= xPointMin || xArrayPoint[i] >= xPointMax) {
xTF = false; // if so it sets the temporary variable to false
}

//length // same as in the first check, however we are testing the length
if (xArrayLength[i] <= xLengthMin || xArrayLength[i] >= xLengthMax) {
xTF = false
}
//area // same as in the first check, however this time we are testing area
if (xArrayArea[i] <= xAreaMin || xArrayArea[i] >= xAreaMax) {
xTF = false
}

xSel[i].selected = xTF; // changes the original value
}
}

最佳答案

下面的代码可以为你节省很多时间

array1.forEach(i => 
xSel[i].selected = !(
xArrayPoint[i] <= xPointMin || xArrayPoint[i] >= xPointMax ||
xArrayLength[i] <= xLengthMin || xArrayLength[i] >= xLengthMax ||
xArrayArea[i] <= xAreaMin || xArrayArea[i] >= xAreaMax
)
);

让我们看看我们在这里做了什么。我们做了两个主要的改变

  1. 选择 forEach 而不是传统的 for:ForEach 被认为比传统的 for 循环更快,因为它们不需要在每次迭代时都重新初始化。

  2. 将多个 if 条件简化为单个赋值语句:由于所有条件都在 OR 操作数下,如果第一个条件为真,tt 不必遍历每个条件< strong>强文本

关于javascript - 带有 If 语句的循环运行缓慢,太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61490137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com