谷歌应用脚​​本(自定义电子表格功能)示例中的'input.map'是什么?

时间:2014-12-29 12:45:51

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

我对谷歌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. .map变量之后的input事物是什么?我在reference page找不到它。它也没有突出显示,因为变量或函数是。
  3. 我不清楚条件陈述的目的。 return input.map(DOUBLE)是否意味着"在整个阵列的相应else语句中执行任何操作"?为什么它的结构如此?
  4. 非常感谢任何见解(或指向正确来源的指示)。

1 个答案:

答案 0 :(得分:5)

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

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

您可以在MDN https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map

上看到地图功能的定义

了解JavaScript的最佳书籍是#14; JavaScript是好的部分" 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