javascript - 调整阵列的性能
问题描述
我有一个数组,可以在我的代码中访问服务时间。我的数组的内容如下所示:
...“-”、“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 个对象需要存储在专用变量中。
由于我遇到了性能问题,我的猜测是它是由于分配和我的检查引起的。
是否有更好更快的方法来访问/检查和/或将值分配给专用变量?
解决方案
我认为您编写的代码不应该有性能问题。但你可以使用一些技巧。例如
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]
}
推荐阅读
- json - 杰克逊将对象序列化为地图的键
- c# - 在文本框数据网格视图单元格中添加新行 [C#]
- python - 为什么 Django 想用代理模型改变表?
- python - AcUro 使用 Python 和 OpenCV 提供的边角优化方法 CORNER_REFINE_SUBPIX
- java - 如何在不计算内部委托的情况下捕获所有 mockito 间谍类方法调用
- angular - 编译失败。./src/app/app.module.ts .Module 未找到:错误:空依赖项(无请求)
- ios - 在 Localizable.strings 中按值获取键
- c++ - 柯南有没有办法导出一个空目录?
- php - 如何重写.htaccess外部链接php
- sql - SQL GROUP BY 并为每个 GROUP 创建元素