javascript - 试图加快我的脚本比较 2 个数组(不是 for 循环)
问题描述
我正在尝试比较我的工作表中的两列 1 列是曾经与我们进行购买的所有电子邮件地址的列表,超过 50000,另一列是与我们进行购买的电子邮件列表我们在过去的一个月里。我试图通过比较主列表中的新电子邮件地址来计算新的电子邮件地址。
我有一些东西可以处理一个较小的列表,但是当我索引我的 50000+ 列表时它会一直超时。有什么办法可以加快我的脚本速度吗?
function compareList(){
var s= SpreadsheetApp.openById('My sheet ID');
var ss = s.getSheetByName("Compare");
var oldsubs = ss.getRange(5,1,ss.getLastRow(),1).getValues();
var newsubs = ss.getRange(5,2,ss.getLastRow(),1).getValues();
var array = newsubs.filter(function(e) {return oldsubs.filter(function(f) {return f[0] == e[0]}).length == 0});
Logger.log(array.length)
欢迎任何帮助。
解决方案
试试这个:
function newnotinold() {
var s = SpreadsheetApp.getActive()
var ss = s.getSheetByName("Sheet1");
var o = ss.getRange(2, 1, ss.getLastRow(), 1).getValues().flat();
var n = ss.getRange(2, 2, ss.getLastRow(), 1).getValues().flat();
let newnotinold = n.filter(x => !~o.indexOf(x));
Logger.log(newnotinold);
}
推荐阅读
- objective-c - Objective C 中的 UITableViewDiffableDataSource
- javascript - Uncaught RangeError: Maximum call stack size exceeded 如果我想发送一个包含对象的数组
- tkinter - 在按钮命令之后,标签配置未按预期工作
- go - 如何覆盖 go 模块中的依赖项?
- mysql - Illuminate\Database\QueryException (23000) SQLSTATE[23000]:完整性约束违规:1048 列 'first_name' 不能为空
- javascript - React 图表,但它看起来很特别
- windows - 我怎么能杀死“abc.exe”的所有任务,除了具有特定PID的任务?
- java - java - 如何将函数作为参数从java传递给kotlin方法?
- python - 如何以特定顺序对第一个字母进行排序,以其他特定顺序对第二个字母进行排序
- r - R 等效于具有内部连接和条件的更新查询