首页 > 解决方案 > 调整阵列的性能

问题描述

我有一个数组,可以在我的代码中访问服务时间。我的数组的内容如下所示:

...“-”、“200”、“连接”、“真”、“-”、“tcp”、...

我的目标是将这些值分配给数组中每个对象的专用变量。现在我已经通过下面的代码实现了这一点:

if (myArray[2] != null) {
            if (myArray[2].length >= 2) {
                a = myArray[2];
        }
    } 

    if (myArray[5] != null && myArray[10] != null) {
        if (myArray[5].length >= 2 && myArray[10].length >= 2) {
            var b = myArray[5] + " " + myArray[10];
            bOutput = b;
        }
    }

如您所见,我总是在访问数组,检查对象的长度(如果值只是“-”,我不希望设置专用值)。我的数组包含大约 40 个对象 - 这 40 个对象需要存储在专用变量中。

由于我遇到了性能问题,我的猜测是它是由于分配和我的检查引起的。

是否有更好更快的方法来访问/检查和/或将值分配给专用变量?

标签: javascriptarraysperformance

解决方案


我认为您编写的代码不应该有性能问题。但你可以使用一些技巧。例如
1.如果您多次检查数组的所有项目并且您的数组在此过程中没有更改,则最好过滤您的数组。

var filteredData = data.filter( item => item != null && item.length > 2);

2.您可以使用元数据数组,您可以在其中保存条件结果。

var myArray = []
var metadata = []
function addToArray(item) {
  myArray.push(item)
  metadata.push(item != null && item.length > 2)
}

if (metadata[2]) {
  a = myArray[2]
}

if (metadata[5] && metadata[10]) {
  var b = myArray[5] + ' ' + myArray[10]
}

推荐阅读