【问题标题】:What is 'input.map' in google apps script (custom spreadsheet function) example?谷歌应用程序脚本(自定义电子表格函数)示例中的“input.map”是什么?
【发布时间】:2014-12-29 12:45:51
【问题描述】:

我对来自 Google 的 Apps Script Guide 的这个示例感到困惑。此函数迭代给定范围并对每个单元格执行计算。

function DOUBLE(input) {

  if (input.map) {            // Test whether input is an array.
    return input.map(DOUBLE); // Recurse over array if so.
  } else {
    return input * 2;
  }

}

我不明白的事情:

  1. 这个函数中的input是什么对象? typeof 告诉我这是一个数字,但它不应该是一个数组吗?毕竟是一系列值(例如 A2:B)。
  2. input 变量后面的 .map 是什么?我在reference page 中找不到它。它也没有像变量或函数那样突出显示。
  3. 我不清楚条件语句的目的。 return input.map(DOUBLE) 的意思是“在整个数组的相应 else 语句中找到你发现的任何东西”?为什么会有这样的结构?

非常感谢任何见解(或指向正确来源的指针)。

【问题讨论】:

    标签: javascript arrays google-apps-script google-sheets


    【解决方案1】:

    此代码是使用自省来有条件地执行代码的示例。 if (input.map) 如果输入是一个数组(并且有一个 map 函数)将返回真值,而在所有其他情况下将返回假值。

    因此,此代码正在测试输入是否为数组,如果不是,则将其视为数字,否则将其视为数组。

    可以在MDN上看到map函数的定义https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map

    学习 JavaScript 的最佳书籍是“JavaScript the Good Parts”http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=sr_1_1?ie=UTF8&qid=1419857713&sr=8-1&keywords=javascript+the+good+parts

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 2012-06-15
      相关资源
      最近更新 更多