首页 > 解决方案 > 由于箭头功能,简单的 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) => {

但我也可能是错的......

谢谢!

标签: javascriptgoogle-apps-script

解决方案


编辑: 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;
}

参考 :

如果这个结果不是你想要的,请告诉我。我想修改它。


推荐阅读