google-apps-script - 滚动随机“骰子”数字然后求和值(GAS)的问题
问题描述
我已经尝试了几个小时来弄清楚为什么我的随机“骰子”滚动功能不会产生我正在寻找的结果。
我的滚动功能:
function roll(min, max, count) {
min = Math.ceil(min);
max = Math.floor(max);
var result = []
for (var i = 0; i < count; i++){
result.push(Math.floor(Math.random() * max) + 1);
}
return result;
}
我的通话功能:
var stats = [];
var STR = roll(1,6,STRrolls);
Logger.log(STR);
STRrolls 的值为 3。日志如下所示:
[19-03-20 23:26:12:730 GMT] [1.0, 3.0, 5.0]
这是我绊倒的地方。我正在尝试对这 3 个值求和,然后将其作为单个值存储在“stats”数组中,这样我也可以对其他几个数组重复该过程。
这是我的脚本的一个更好的示例:
function roll(min, max, count) {
min = Math.ceil(min);
max = Math.floor(max);
var result = []
for (var i = 0; i < count; i++){
result.push(Math.floor(Math.random() * max) + 1);
}
return result;
}
function sumArr(array) {
return array.reduce(function(a,b){
return a + b
}, 0);
}
function CHAR {
var C_R = SpreadsheetApp.getActive().getSheetByName('Char_Ref')
var STRrolls = C_R.getRange("F2").getValue();
var DEXrolls = C_R.getRange("F3").getValue();
var RESrolls = C_R.getRange("F4").getValue();
var EMProlls = C_R.getRange("F5").getValue();
var STArolls = C_R.getRange("F6").getValue();
var stats = [];
var STR = roll(1,6,STRrolls);
Logger.log(STR);
var DEX = roll(1,6,DEXrolls);
var RES = roll(1,6,RESrolls);
var EMP = roll(1,6,EMProlls);
var STA = roll(1,6,STArolls);
stats.push([STR,DEX, RES, EMP, STA])
rangeStats.setValues(stats);
rangeClass.setValue(CLASSval);
rangeLevel.setValue(1);
}
问题是运行此函数之前和之后会给出相同的日志:
[19-03-20 17:03:13:560 PDT] [3.0, 1.0, 4.0] [19-03-20 17:03:13:561 PDT] [3.0, 1.0, 4.0]
解决方案
像那样?:
function getSum(total, num) {
return total + num;
}
var stats = [];
var STR = roll(1,6,STRrolls);
stats = STR.reduce(getSum);
Logger.log(STR);
您推送了数组中的每个值并且没有执行任何添加操作。
推荐阅读
- jwt - Twilio Authy 和持久令牌
- linux - 如何递归地观察 Rust 中的文件更改?
- python - 如何仅将特定内容记录到日志文件?
- raspberry-pi - 非常奇怪的 gpio 行为编程 ATtiny25v 与 avr-gcc 和 avrdude 通过树莓派
- c++ - 如何从主布局中删除所有项目?
- python - 合并 pandas DataFrame 并返回带有列名的常用值
- dart - Flutter 又抛出一个异常:RenderBox was not layout: RenderRepaintBoundary#eaea6 NEEDS-LAYOUT NEEDS-PAINT
- java - 如何将 xml 字符串转换为字符串输出
- nativescript - Nativescript RadCalendar 与 firebase 实时数据库
- android - 为什么 Dagger 组件必须声明其作用域?