【发布时间】:2018-02-28 01:28:40
【问题描述】:
我在 javascript 方面不是很有经验,但我一直试图找到解决问题的方法,但没有成功。 我有 3 个 15000 行和 39 列的数组,我需要比较它们以仅提取与单个数组中我需要的条件匹配的值。
到目前为止,我已经得到了这段代码,它可以工作,但一次只能比较大约 1000 行。我没有找到一些更快的解决方案? 已经尝试寻找几种解决方案和 adpatar,但我找不到类似的问题。
非常欢迎任何帮助。提前致谢。
// ...definition of variables...
var newData = data3;
var novo =[]
var novo2 =[]
for(var i in data){
var duplicate = false;
for(var j in newData){
//compare only if >0 to dont spend time in script
if(data[i][33] > 0 || data[i][30] > 0 || newData[j][33] > 0 || newData[j][30] > 0) {
//compare first column
if(data[i].slice(0,1).toString() == newData[j].slice(0,1).toString()) {
duplicate = true;
var nd = newData[j].slice(30,34)
}
}
}
if(duplicate){
novo.push(data[i].slice(0,4))
novo2.push(nd)
}
}
//set the values
编辑: 每一行都是这种类型的数据:
[3976.0, Talonete c/rebordo maf sindolor .med., 20.8, 14.61, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9 月 18 日星期日 23:00:00 GMT+00:00 2011 年 8 月 20 日星期三 23:00:00 GMT+00 :00 2014, 0.0, ORTOMEDIFAR-IMPORTAÇAO E DISTRIBUIÇAO DE ARTIGOS MEDICA, Laboratórios Iberpos, S.A, GH0000, 0.0]
[4286.0, PULSO ELASTICO TAM 1 BEIJE, 5.15, 3.2, 6.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0、1.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0、1.0,2017 年 10 月 12 日星期四 23:00:00 GMT+00:00,2017 年 10 月 12 日星期四 23:00:00 GMT+00:00, 2.0, N/D, N/D, GH0000, 0.0]
[80105.0, LIMA LASER COM PEGA, 6.35, 3.65, 23.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 6 月 24 日星期三 23:00:00 GMT+00:00 2015, 7 月 9 日星期二 23:00:00 GMT+00:00 2013, 0.0 , N/D, N/D, GH0000, 0.0]
【问题讨论】:
-
您能否明确提及问题中的条件?
-
@void 我想用截图的代码你可以理解,但简而言之,我打算比较每个数组的第 1 列,并从存在的数组中添加相同的行数据,如果值大于 0
-
@SérgioSá 我们可以改进您的代码,但请分享一些数据,以便我们可以运行代码。只需大约 5-10 条记录就足够了
-
@NelsonTeixeira 谢谢,我编辑了我的问题。
标签: javascript arrays google-apps-script