javascript - 由于箭头功能,简单的 Javascript 代码在 Google 文档中不起作用
问题描述
我尝试在 google docs 中实现一段简单的代码作为脚本。它的功能是验证身份证号码。问题是该代码使用的语法对于谷歌文档脚本来说太高级了——它使用箭头函数,据我所知,谷歌文档不支持该函数。试图重写代码只是没有用 - 我是一个初学者,虽然知道如何阅读代码适应一个对我来说要复杂得多。谁能建议如何将箭头功能改回单独的功能?
这是代码:
function isValidIsraeliID(id) {
var id = String(id).trim();
if (id.length > 9 || id.length < 5 || isNaN(id)) return false;
// Pad string with zeros up to 9 digits
id = id.length < 9 ? ("00000000" + id).slice(-9) : id;
return Array.from(id, Number)
.reduce((counter, digit, i) => {
const step = digit * ((i % 2) + 1);
return counter + (step > 9 ? step - 9 : step);
}) % 10 === 0;
}
我相信导致问题的线路是这一行:
.reduce((counter, digit, i) => {
但我也可能是错的......
谢谢!
解决方案
编辑: V8 引擎目前支持箭头功能。请参阅:https ://developers.google.com/apps-script/guides/v8-runtime#arrow_functions
Google Apps 脚本 (GAS) 尚不支持 ECMAScript 2015 (ES6)。不幸的是,在当前阶段,从 ES6 添加的功能无法使用。因此需要将这些函数转换为 GAS。在您的脚本中,也使用了此类功能。那么这个改装怎么样呢?
修改点:
- GAS 不能使用箭头功能。
- SomePerformance 和 NielsNet 提到了这一点。
Array.from()
不能在 GAS 使用。- 在这里,我使用了
Array.map()
.
- 在这里,我使用了
修改后的脚本:
function isValidIsraeliID(id) {
var id = String(id).trim();
if (id.length > 9 || id.length < 5 || isNaN(id)) return false;
// Pad string with zeros up to 9 digits
id = id.length < 9 ? ("00000000" + id).slice(-9) : id;
return Array.map(id, Number) // Modified
.reduce(function(counter, digit, i) { // Modified
const step = digit * ((i % 2) + 1);
return counter + (step > 9 ? step - 9 : step);
}) % 10 === 0;
}
参考 :
如果这个结果不是你想要的,请告诉我。我想修改它。
推荐阅读
- php - 从 blob“二进制”列下载非常大文件的内存有效方法
- django - 我如何在主页视图 www.mywebsite.com 中获得 pk
- gcc - Raspberry PI4 分段错误
- c++ - 为什么更新现有密钥的优先级会产生不一致的结果?
- python - 通过spark从azure sql表中删除数据
- android - 从另一个 Activity (webview) 重新启动一个 Activity
- laravel - Laravel Backpack - 为数据透视表添加列
- oracle - 包“set serveroutput on”导致编译错误
- php - 鉴于帖子中的出生日期,我想在 Wordpress 帖子中以年月和日为单位显示年龄
- elasticsearch - ElasticSearch - 如何使用字段别名进行嵌套字段聚合?