在嵌套的for循环中,从较长的循环开始是否有任何优势?或相反亦然?

jyl*_*pez 6 javascript arrays for-loop

例如:

var longArray = [1, 2, 3, 4]
var shortArray = [2, 3]
Run Code Online (Sandbox Code Playgroud)

哪一个更快?

首先是长循环:

for (var i = 0; i < longArray.length; i++) {
  for (var j = 0; j < shortArray.length; j++) {
    if (longArray[i] === shortArray[j]) {
      // do something
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

或者先短循环:

for (var i = 0; i < shortArray.length; i++) {
  for (var j = 0; j < longArray.length; j++) {
    if (longArray[i] === shortArray[j]) {
      // do something
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

或者我没有考虑任何优势?或者根本没关系?

Pau*_*aul 4

短循环优先通常更快,只是因为它花费更多时间按照元素在内存中的布局顺序访问元素。您需要longArray有更多的元素,至少几千个。这是一个测试用例来演示差异:https://jsperf.com/loop-order-sl

对于您发布的阵列,其相对longArray较小,性能差异可以忽略不计。正如@Ajaypayne 观察到的那样,较短的数组可能会快一点,反之亦然,具体取决于环境。