【问题标题】:Google apps script Counter function谷歌应用脚​​本计数器功能
【发布时间】:2019-05-08 23:40:35
【问题描述】:

我试图在 Google Apps 脚本中的 Javascript 代码下运行。但我在第 3 行遇到语法错误。
输入:数组
例如:var array = ['a', 'b', 'c', 'b', 'a', 'b', 'c', 'a', 'a', 'a'];
输出:类似于 Python Counter 的对象
{ "a": 5, "b": 3, "c": 2 }

function Counter(array) {  //function returns a counter of the input array.
  var count = {};
  array.forEach(val => count[val] = (count[val] || 0) + 1);
  return count;
}

我最初的问题是寻求帮助我识别错误。 上述函数的错误是由两个用户(@theMaster 和@tehhowch)识别的箭头函数。 然后我创建了以下在 JavaScript 中工作但在 Google Apps 脚本中出错的函数。

TypeError:无法调用未定义的方法“forEach”。 (第 182 行,文件“代码”)

function createCounter(array) {  //function returns a counter of the input array.
  var countv = {};
  array.forEach( function(val)
    {countv[val] = (countv[val] || 0) + 1;
  });
return countv;
};                                                                      

var list = [40, 40, 10, 60, 60, 60, 60, 30, 30, 10, 10, 10, 10, 10, 40, 20] Logger.log(createCounter(list));

预期输出:{ "10": 6, "20": 1, "30": 2, "40": 3, "60": 4 }

我很感激有人可以帮助我解决这个问题。

【问题讨论】:

  • 不支持箭头语法=>。使用常规函数语法。
  • @tehhowch 现在我遇到了一个错误。 “TypeError:无法调用未定义的方法“forEach”。” function Counter(array) { //函数返回输入数组的计数器。变量计数 = {}; array.forEach( function(val) {count[val] = (count[val] || 0) + 1; });返回计数; }
  • 您的问题出在调用Counter的代码中
  • @tehhowch 更改函数名称后我得到了同样的错误。 “TypeError:无法调用未定义的方法“forEach”。(第 183 行,文件“代码”)”。 function createCounter(array) { //function returns a counter of the input array. var countv = {}; array.forEach( function(val) {countv[val] = (countv[val] || 0) + 1; }); return countv; } var list = ['a', 'b', 'c', 'b', 'a', 'b', 'c', 'a', 'a', 'a']; Logger.log(createCounter(list));

标签: google-apps-script


【解决方案1】:

我试过了,我得到了:{60=4.0, 40=3.0, 30=2.0, 20=1.0, 10=6.0}

function testCounter(){
  var s=createCounter([40, 40, 10, 60, 60, 60, 60, 30, 30, 10, 10, 10, 10, 10, 40, 20]);
  Logger.log(s);
}

function createCounter(array) {  //function returns a counter of the input array.
  var countv = {};
  array.forEach(function(val){
    countv[val] = (countv[val] || 0) + 1;
  });
  return countv;
} 

【讨论】:

  • 能否请您帮助我改进 createCounter(array) 函数以获得类似于 { "10": 6, "20": 1, "30": 2, "40": 3, "60": 4 } 的输出。同样的函数在 JavaScript 中也能正常工作。
  • 这是我在 Chrome 控制台中得到的:{10: 6, 20: 1, 30: 2, 40: 3, 60: 4}
猜你喜欢
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多