与getValues()数组一起使用时,“减少”会产生意外结果

时间:2019-03-13 18:01:14

标签: concatenation

我无法理解在这种情况下“减少”的工作原理。

我试图将电子表格的内容加载到数组中,然后应用 reduce 获得单个值。

var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

function updateValues(){
  dataRangeSearch = activeSheet.getRange(1,1,activeSheet.getLastRow(),activeSheet.getLastColumn());
dataSearch0 = dataRangeSearch.getValues();
Logger.log("dataSearch0: " + dataSearch0);
  dataSearch = dataRangeSearch.getValues().reduce(function (a, b) {
    return a.concat(b);
  });;
}
updateValues();
Logger.log("dataSearch: " + dataSearch);

我希望在调用updateValues()函数之后,存储在dataSearch中的结果将是一个单个值,该值由电子表格中所有串联在一起的数据组成。但这不是事实。

查看日志:

  

[19-03-13 10:33:46:515 PDT] dataSearch0:R1C1,R1C2,R1C3,R2C1,R2C2,R2C3

     

[19-03-13 10:33:46:516 PDT]数据搜索:R1C1,R1C2,R1C3,R2C1,R2C2,R2C3

dataSearch0是我所期望的,只是电子表格内容的列表。

我不明白为什么dataSearch是它的原本,因为它与dataSearch0相同,并且我希望 reduce 的结果根据我在W3schools中阅读的内容产生单个值:< / p>

reduce()方法将数组缩小为单个值。 reduce()方法为数组的每个值(从左到右)执行提供的函数。 函数的返回值存储在累加器中(结果/总计)。

但是累加器的结果不是单个值,而是一个数组。

在帮助您理解 reduce 在这种情况下的工作方式以及如何实现我的目标(获得包含所有电子表格数据的单个值)方面,我将不胜感激。我想要这个,以便我可以搜索由3个水平连续的电子表格单元格的预期内容组成的字符串的第一次出现。

0 个答案:

没有答案