这可能是一个简单的答案,但我是一个爱好者,这真的打破了我的大脑。我试图通过遍历数组为变量赋值。
我的代码是用Discord.js编写的Discord的TTRPG工具机器人。对于这个特殊功能,我希望根据输入的玩家数量滚动 n stat卷,然后将所有这些卷汇集在一起并对它们进行排序。从那里开始,我希望让它穿过排序的数组,为每个玩家提供一个统计集,以便每个玩家都能在一个公平的比赛场地上接近。
例如,如果输入是3个玩家,则机器人将滚动3组6个统计数据并将它们汇集到一个数组中。为了简单解释,我们说我们从1-18推送了所有数字。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
会被分配到
A B C C B A A B C C B A A B C C B A
这样最终的变量
A = [1,6,7,12,13,18]
B = [2,5,8,11,14,17]
C = [3,4,9,10,15,16]
我现在的代码只是通过循环(A,B,C,A,B,C ......)对它们进行排序,这不会导致玩家被平均。我已经尝试了一些不同的方法来获得我需要的结果,但是结束变量只能被分配一次,中间变量会分配更多的统计数据,或者每个玩家变量只分配一个统计数据。 / p>
我已尝试在线搜索任何帮助,但用Google搜索任何内容" Javascript"和" Snake"只是教你如何制作游戏,所以我真的希望你们能够帮助我。非常感谢你,如果我想说的话不清楚,我很抱歉,所以我非常乐意回答你可能有的任何问题,以帮助解决这个问题。 !
代码:
if (msgContent.startsWith(".dstats ")) {
let args = msgContent.split(" ").slice(1);
var regex = /^\d+$/;
var statIndex = [];
var reply;
var forward = true;
if(regex.test(args) && args <= 10){
for(var i = 0; i < args*6; i++){
statRoll();
statIndex.push(randStat);
};
distSort = statIndex.sort(sortNumber);
for( j = 0; j < args; j++){
this['player'+j] = [];
};
var playIndex = 0;
for( f = 0; f < distSort.length; f++){
if(playIndex < args && playIndex >= 0){
this['player'+playIndex].push(distSort[f]);
}else {
playIndex = 0;
this['player'+playIndex].push(distSort[f]);
};
playIndex++;
};
reply = "Your stats blocks are as follows:\n";
for (k = 0; k < args; k++){
reply += "Player " + (k+1) +": [" + this['player'+k].join(', ') + "]\n";
};
msg.reply(reply);
}else(
msg.reply("Looks like you inputted an improper number or your number is too high. Check your command and try again!")
);
}
答案 0 :(得分:1)
我建议您在这种情况下使用JSON,因为这样可以更轻松地处理您的数据。
无论如何,以下代码应该可以解决问题:https://jsbin.com/quvexu/edit?js,console
// Declare input and output variables
arr1 = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18];
arr2 = ['a','b','c','c','b','a','a','b','c','c','b','a','a','b','c','c','b','a'];
results = {a:[], b:[], c:[]};
// Do the work
arr2.forEach(function(d,i){ results[d].push(arr1[i]); })
// Print the results
console.log("Results", results);
&#13;
答案 1 :(得分:1)
您可以迭代所需部件的给定长度和部件数量,然后对均匀和不均匀的部件采用计算值。
var length = 6,
lines = 3,
result = [],
i, j;
for (i = 0; i < length; i++) {
for (j = 0; j < lines; j++) {
result[j] = result[j] || [];
result[j].push(i * lines + (i % 2 ? lines - j : j + 1));
}
}
console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
答案 2 :(得分:1)
您可以执行以下操作。它将处理// Need to exclude My Music, My Pictures, My Videos (from Documents folder)
std::string stem = current.filename().string();
//If not equal to excludes, then copy away; else skips them
if (!(stem == "My Music" || stem == "My Pictures" || stem == "My Videos"))
{
fs::copy_file(current,destination / current.filename(),
fs::copy_option::overwrite_if_exists);
}
个玩家,并按照你描述的顺序为每个玩家分6点。
n