Zapier - Javascript错误的自定义函数行为

Posted

技术标签:

【中文标题】Zapier - Javascript错误的自定义函数行为【英文标题】:Zapier - Javascript wrong custom function behaviour 【发布时间】:2020-04-03 08:50:33 【问题描述】:

我在我的 Zapier 应用程序中定义了一个函数 numberFormat

我期待像50 这样的结果,但实际上我得到了5000。有关如何解决此问题的任何建议?

function numberFormat(number) 
  var newString = number.toString().replace(/,/g, '.'); // togli tutte le virgole e sostituiscile con punti
  var lastDotIndex = newString.lastIndexOf('.'); // l'ultimo che trovi è separatore dei decimali
  var decimal = newString.slice(lastDotIndex); // parte decimale
  var integerSlice = newString.slice(0, lastDotIndex); // parte intera
  var integer = integerSlice.replace(/[^0-9]/g, ''); // della parte intera mi servono solo i numeri
  var strResult = integer + decimal; // concatena intero e decimale

  return Number(strResult);


// In this same environment I sent a test value like this:

console.log(numberFormat("50,00"));

【问题讨论】:

上面的代码在 Chrome 中生成 50。我也没有看到任何 ES6 代码 @mplungjan 确实如此。我无法重现这一点。我在 IE11 中尝试过,这是我所拥有的最接近 ES5 环境的环境。 【参考方案1】:

您需要添加一个点或只是替换并从中获取一个数字。

function numberFormat(number) 
    return +number
        .toString()
        .replace(/,/g, '.')
        .replace(/\.(?=.*\.)/g, '')
        .replace(/[^0-9.]/g, ''); // allow dot


console.log(numberFormat("50,00"));
console.log(numberFormat("1,000,00"))

【讨论】:

如果我发送console.log(numberFormat("1,000,00")),它会返回1.000.00,但我会得到1000 它仍然返回 1000 而不是 10,这很奇怪,因为当我在 Jsfiddle 中运行你的 sn-p 时它可以工作。

以上是关于Zapier - Javascript错误的自定义函数行为的主要内容,如果未能解决你的问题,请参考以下文章

Zapier JavaScript 和数组

Javascript中的自定义错误对象

Zapier 自定义响应对象

Zapier 正在创建包含我无法使用的记录的列表

在 Zapier 中使用自定义请求创建 Stripe 退款

Zapier 打开 exe / Zapier 代码打开打开 exe 的 javascript