我如何直接赋值给数组,但在OOB异常上使用push方法
How do I directly assign values to an array but use push method on OOB exception?
我的理解是,从性能的角度来看,在填充数组时,直接赋值比.push()
更可取。
我的代码目前如下:
for each (var e in Collection) {
do {
DB_Query().forEach(function(e){data.push([e.title,e.id])});
} while (pageToken);
}
DB_Query()
方法运行Google Drive查询并返回一个列表。
我的问题出现,因为DB_Query()
可以返回一个可变长度的列表。因此,如果我构造data = new Array(100)
,直接赋值就有可能越界。
是否有一种方法,我可以try
和catch
一个越界异常有值直接分配给100个预分配的索引,但使用.push()
任何溢出?这里的期望是OOB异常不会经常发生。
另外,我不确定它是否重要,但我正在使用以下方法清除计数器变量>=100
后的数组:
while(data.length > 0) {data.pop()}
在Javascript中,如果你设置的索引值大于数组长度,它会自动"拉伸"数组。所以没必要为这个操心。如果你能猜出数组的大小,那就去猜吧。
关于你的清算循环:这是正确的,似乎pop
确实是最快的方式。我最初的建议是将数组length
设置回零:data.length = 0;
现在有一个提示,我认为这真的会对性能产生影响:你担心的是错误的部分!
在Apps Script中,需要长时间的不是动态调整数组大小,或者处理数据,这是快速的。问题总是与"API调用"有关。即使用UrlFetch
或Spreadsheet.Range.getValue
等。
你应该注意使尽可能少的API调用,在你的情况下(我猜现在,因为我没有看到你的整个代码),你似乎做错了。如果DB_Query
是昂贵的(在API调用方面),你不应该把它嵌套在两个循环下。最好的解决方案通常包括事先弄清楚您需要的所有内容(如果它不调用任何地方,则执行尽可能多的循环),然后传递所有参数以执行批量操作并一次收集所有数据(在一个API调用中),即使它涉及获取比您需要的更多的数据。然后,在手中的整个数据,循环并根据需要转换它(这是快速部分)。
- 在javaservlet doPost方法中启动线程时,无法返回异常消息
- Meteor方法-处理消息时出现内部异常
- 向模板实例变量传递调用方法调用的结果时出现异常
- 如何使用发布方法 (AJAX) 调用异常
- Krajee文件输入小部件'上传'方法引发异常
- 定义自定义JavaScript异常的较短方法
- 需要一种方法来系统地处理NodeJS项目中的错误/异常/拒绝
- 将方法添加到数字引发异常
- 错误 405 方法未分配异常,当使用 AJAX 与 Laravel 一起发布时
- 在原型方法中抛出异常,未在外部尝试捕获 (JavaScript) 中捕获
- 使用 Express 4 在 Node.js 中全局处理异常的最佳方法
- Javascript 本机方法抛出意外异常
- 如何处理 ExtJs 中的异常“无法调用方法 getRange of null”
- 调用方法“Mongol_verifyDoc”时出现异常 引用错误:未定义匹配项
- Javascript 方法可用,但在调用该方法时会引发异常
- 在Toast中显示错误和异常,或使用MVC4和实体框架的类似方法
- 未捕获的异常:无法在初始化之前调用滑块上的方法;尝试调用方法'禁用'
- 是否有任何解决方法可以重新抛出异常并在Javascript中保留堆栈争用
- 从JS中的另一个函数调用方法(TypeError异常)
- jQuery 1.5 scrollTop方法引发异常