jak*_*kub 3 javascript arrays google-sheets google-apps-script
我对谷歌的Apps脚本指南中的这个例子感到困惑.此函数迭代给定范围并对每个单元格执行计算.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白的事情:
input这个函数有什么对象?typeof告诉我这是一个数字,但它不应该是一个数组?它毕竟是一系列值(例如A2:B)..map之后是什么东西input?我在参考页面找不到它.它也没有突出显示,因为变量或函数是.return input.map(DOUBLE)意味着" else在整个数组的相应语句中做什么"?为什么它的结构如此?任何见解(或指向正确来源的指针)都非常感激.
此代码是使用内省有条件地执行代码的示例.if (input.map)如果输入是一个数组(并且有一个map函数),则返回truthy,并且在所有其他情况下将返回falsy.
因此,此代码进行测试以查看输入是否为数组,如果不是,则将其视为数字,否则将其视为数组.
您可以在MDN上看到地图功能的定义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 +的+良好+份