这是我发送的代码:
for (var com = 0; com < 10; com++) {
var op = [0, 1, 2, 3];
combo = op[Math.floor(Math.random() * op.length)];
door1[com] = combo;
op.splice(combo, 1);
combo = op[Math.floor(Math.random() * op.length)];
door2[com] = combo;
op.splice(combo, 1);
combo = op[Math.floor(Math.random() * op.length)];
door3[com] = combo;
op.splice(combo, 1);
combo = op[Math.floor(Math.random() * op.length)];
door4[com] = combo;
eim.print(op.toString());
}
现在我打印op数组。我应该只获得1个值,因为我已经删除了其他索引。与拼接。 但是当我打印结果10次。我发现有些索引没有被删除。 我试图创建4种不同的组合。每个组合都与另一个组合不同。
答案 0 :(得分:2)
你在做什么,
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
void reverse(string str)
{
char *tail, *head;
head = &str[0];
tail = &str[str.size()];
cout << "String inverted is: ";
while ((head!=tail)&&(head!=--tail))
{
char temp=*head;
*head++=*tail;
*tail=temp;
}
}
int main(int argc, char const *argv[])
{
string str;
cout << "Enter a string: ";
getline(cin,str);
reverse(str);
cout << str;
cout <<"\n";
return 0;
}
现在它要做的是从索引为Array.splice(combo,1);
的数组中拼接一个元素,现在combo可以是任何值,而且它不是索引。
您可以按索引FIDDLE
进行尝试代码:
combo
答案 1 :(得分:1)
只需取门阵列的拼接元素即可。 var newSpreadsheet = SpreadsheetApp.create("I am a copy");
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var projectname = SpreadsheetApp.getActiveSpreadsheet();
sheet.copyTo(newSpreadsheet);
var dest = newSpreadsheet.getSheetByName("Copy of Sheet1").getRange("E7");
newSpreadsheet.getSheetByName("Copy of Sheet1").getRange("B1").copyTo(dest);
var notNeeded = newSpreadsheet.getSheetByName("Copy of Sheet1");
newSpreadsheet.deleteSheet(notNeeded);
返回一个数组,所以对于一个数组,取第一个元素,索引为Array.prototype.splice
。
[0]
的最后一个分配不需要随机计算,只需要采用数组door4
的单个元素。
op
&#13;
答案 2 :(得分:0)
您需要使用项目的索引将其从数组中删除,而不是值
var door1 = {},
door2 = {},
door3 = {},
door4 = {};
for (var com = 0; com < 10; com++) {
var op = [0, 1, 2, 3];
door1[com] = getValue(op);
door2[com] = getValue(op);
door3[com] = getValue(op);
door4[com] = getValue(op);
snippet.log(JSON.stringify(op));
console.log(op)
}
function getValue(array) {
var idx = Math.floor(Math.random() * array.length),
val = array[idx];
array.splice(idx, 1);
return val;
}
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>