阵列与开关的优点

时间:2014-02-20 18:32:22

标签: javascript arrays switch-statement

这与javascript switch vs loop on array略有相似,但不同。比较

function Function1 (n) {
  switch (n) {
    case 0:
      return "apple";
    break;
    case 1:
      return "pear";
    break;
    // and a few more, or many more
  }
}

var Array2 = ["apple", "pear"]; // and more

然后根据需要调用或引用。第二个是更整洁,但它有任何重要的缺点,不仅在速度方面,而且在内存使用方面?如果数组中有更多的case / elements,答案会改变很多吗?您的答案是Javascript特定的还是编程的一般原则?谢谢。

2 个答案:

答案 0 :(得分:0)

我将作为编程的一般原则回答:

(1)Arrays将所有Strings存储在内存中以用于整个范围,或者以C / C ++等语言存储内存被手动分配,直到显式释放内存为止。对于大型阵列,这可能是内存密集型的。

(2)与switch()不同,在恒定时间内添加对象时,在数组的开头或中间添加或删除对象将需要将所有后续元素重新复制到新的位置。如果数组需要增长,它可能需要重新复制所有对象,因为作为数据结构的数组具有固定数量的元素,并且如果没有空间,增长数组将需要声明和重新初始化新数组的元素左

(3)对于查找,switch()以线性时间发生,而数组查找以更快的恒定时间发生。

答案 1 :(得分:0)

前段时间,我创建了这个jsperf来比较switch和其他方法。切换在chrome中非常慢:

http://jsperf.com/bmcgin-switch-vs-if-vs-obj