【发布时间】:2020-04-18 02:21:00
【问题描述】:
让我们从简单的形式开始。
假设您有一个像这样的简单数据集:您想要检索每个资产的累积金额。
首先,我将按资产值过滤(排列)数组
var pairs = ["eur", "usd", "pop", "dot", "cad", "sol"];
for(i=0; i<pairs.length; i++){
var filtArray1 = dataArray.filter(function filt(el){return el.asset === pairs[i];});
filtArrays.push(filtArray1);
然后执行任何类型的操作,比如总结一下:
var values = Object.keys(filtArrays[i]).map(function(e){return filtArrays[i][e].amount});
parziali.push(values);
var somma = values.reduce(function(acc, val) { return acc + val; }, 0);
somme.push(somma);
//result "somme": [9.0, 9.0, 6.0, 6.0, 9.0, 3.0]
}
好的,您可以使用indexOf(); 或任何其他更快的方法,但这不是重点。
重点是:假设我们现在向这个数据集添加了一个额外的层,一些日期字段。现在我们有:
而且,和以前一样,您希望能够检索 每个 周的 每个 资产的金额(这些是一年中的周数)..
你是怎么做到的?
它突然变成了指数。您可以使用什么类型的流程来保持迭代(即:自动)并同时减轻工作量?
此时您甚至可能想要添加额外的数据层..
如您所见,我们有两个不同的钱包,都持有欧元,但在同一周。
现在我们希望能够检索每个周每个资产每个每个钱包的数量。正如我所说,它有点变成指数:你是如何处理的?谢谢
ps: 数据显然之前被处理过
for(i=0; i<data.length; i++){
var dataRow = data[i];
var record = {};
record['weeks'] = dataRow[0];
record['asset'] = dataRow[1];
record['amount'] = dataRow[2];
dataArray.push(record);}
【问题讨论】:
-
您可以利用工作表公式,特别是 QUERY 函数来提取您需要的数据。您需要了解部分实现 SQL 的 Google 的 Visualization Query Language。如果您需要使用 GAS 完成此操作,请查看以下 stackoverflow 线程:Using Bound Google Scripts to Generate a Query Object
-
谢谢,我明天去看看
-
@DimuDesigns 感谢您的评论。我检查了它,结果证明这是我过去几天一直在寻找的东西。我已经考虑过使用 DB 方法,但我得出的结论是我只能使用这种方法:developers.google.com/apps-script/guides/…。你告诉我的实际上是缓解,因为如果我理解得很好,我可以让我的工作表成为我自己的数据库。我需要更详细地研究它,我可能会在这个小项目的第二个版本中使用它
标签: javascript arrays google-apps-script mapping filtering