我的球员名单以
activeRange[x]
其中x每天都会变化。
x值中的每一个都必须至少有4个后续值(可能更多)。理想情况下,我希望数组看起来像:
activeRange[x][y]
因此,这是我到目前为止所做的:
var MATCH = AllData[TotalRows][TotalColumns+1];
activeRange[TotNumPlayers].push(MATCH);
这些全部位于3个嵌套的for循环内。
TotNumPlayers
将迭代开头声明的给定集合(有点像23)。完成后,
TotalRows
会迭代,然后最终
TotalColumns
我遇到以下错误:
TypeError: Cannot find function push in object mitch
mitch是activeRange [0]的值。我一直在盯着这种方式太久了,所以我们将不胜感激!
编辑:在下面插入代码:
请忽略所有评论。我复制/粘贴了昨天使用的部分代码以执行不同的功能。
这是我第二次在该网站上发布内容,因此尝试将这个怪物格式化为漂亮的声音听起来很吓人。希望这足够好。
这就是activeRange的声明和初始化方式。
var activeRange = new Array();
for (var b=0; b<=lastRow-2; b++){
activeRange[b] = sheetRANK.getRange(b+2,1).getValue();
}
这就是功能。
function getTotalScore(activeRange, w) {
Logger.clear()
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetWAR = ss.getSheetByName('WAR');
var sheetRANK = ss.getSheetByName('RANK');
var AllData = sheetRANK.getDataRange().getValues();
Logger.log('First');
for (var TotNumPlayers = 0; TotNumPlayers <= activeRange.length; TotNumPlayers++) {
Logger.log('Second');
var f = 0;
for (var TotalColumns = 0; TotalColumns <= AllData[0].length; ++TotalColumns) { // Init n. If n <= the total columns (second dimension), inc n.
Logger.log('Third');
for (var TotalRows = 0; TotalRows <= AllData.length; ++TotalRows) { // Init i. If i <= the total rows (first dimension), inc i.
Logger.log('Fourth');
//try{ // to avoid errors.
if (activeRange[TotNumPlayers] != "") {
Logger.log('Here?');
if (AllData[TotalRows][TotalColumns].valueOf().toUpperCase() == activeRange[TotNumPlayers].toUpperCase()) {
Logger.log('How About Here?');
var MATCH = AllData[TotalRows][TotalColumns + 1];
activeRange.push(TotNumPlayers, MATCH);
for (var Calc = 0; Calc <= activeRange[TotNumPlayers].length - 1; Calc++) {
var OverallScore = ((activeRange[TotNumPlayers][0] * 1.0) + (activeRange[TotNumPlayers][1] * .75) + (activeRange[TotNumPlayers][2] * .50) + (activeRange[TotNumPlayers][3] * .25));
sheetRANK.getRange(activeRange[TotNumPlayers] + 1, 2).setValue(OverallScore);
f = f + 1;
}
if (TotalRows == AllData.length - 1 && TotalColumns == AllData[0].length - 1 && f == 0) {
Browser.msgBox('No names matching \'' + activeRange[TotNumPlayers] + '\' found. Check your spelling!');
return;
}
}
}
}
}
}
}
最佳答案
尝试考虑可以使用哪种数据结构来简化生活。对于这种特殊情况,您具有要与之关联某些数据的玩家列表。您可能会使用类似以下的结构:
activeRange = [
{
name: 'mitch',
data: []
}
]
当您想更新数据时,只需调用
activeRange[0].data.push(someData)
。activeRange
是一组播放器,每个播放器由具有某些属性(名称,数据等)的对象表示。调用
activeRange[0]
将产生数组中的第一个播放器,而activeRange[0].data
将产生与该播放器关联的数据,然后您可以根据需要进行操作(push
,pop
等)关于javascript - 如何在JavaScript中插入二维数组的第二维?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32676084/