Javascript: 为什么我的 indexof 会 return 找到值的行
Javascript: why my indexof would return the row where the value is found
我编写此代码的目的是循环遍历名称列表。当代码在列表中找到 waitingName 时,它应该用一行信息替换名称出现的行。当我尝试 运行 此代码时,它会将信息行粘贴到屏幕顶部,而不是在名称列表开始的第 17 行之后。
var waitingName = waitingSheet.getRange(6,13).getValue();
var edittedInfo = waitingSheet.getRange(6,3,1,12).getValues();
var waitingListNames = waitingSheet.getRange(17, 11, 105,1).getValues().flat();
var index = waitingListNames.indexOf(waitingName);
if (index > -1) {
waitingSheet.getRange(index + 1,1,1,12).setValues(edittedInfo);
}
解决方案:
index
取值 >=0
,因此 index+1
取值 >=1
。这个
这就是为什么您的代码从 first 行开始粘贴的原因。
如果要在第第行(包括第17行)之后粘贴信息则修改为:
waitingSheet.getRange(index + 1,1,1,12).setValues(edittedInfo);
对此:
waitingSheet.getRange(index + 17,1,edittedInfo.length,edittedInfo[0].length).setValues(edittedInfo);
因为 index
可以取值 >=0
,index + 17
取值 >=17
,这是所需的起始行点。
此外,建议改用 .length
,以防以后要更改 edittedInfo
的大小。
参考文献:
我编写此代码的目的是循环遍历名称列表。当代码在列表中找到 waitingName 时,它应该用一行信息替换名称出现的行。当我尝试 运行 此代码时,它会将信息行粘贴到屏幕顶部,而不是在名称列表开始的第 17 行之后。
var waitingName = waitingSheet.getRange(6,13).getValue();
var edittedInfo = waitingSheet.getRange(6,3,1,12).getValues();
var waitingListNames = waitingSheet.getRange(17, 11, 105,1).getValues().flat();
var index = waitingListNames.indexOf(waitingName);
if (index > -1) {
waitingSheet.getRange(index + 1,1,1,12).setValues(edittedInfo);
}
解决方案:
index
取值>=0
,因此index+1
取值>=1
。这个 这就是为什么您的代码从 first 行开始粘贴的原因。
如果要在第第行(包括第17行)之后粘贴信息则修改为:
waitingSheet.getRange(index + 1,1,1,12).setValues(edittedInfo);
对此:
waitingSheet.getRange(index + 17,1,edittedInfo.length,edittedInfo[0].length).setValues(edittedInfo);
因为 index
可以取值 >=0
,index + 17
取值 >=17
,这是所需的起始行点。
此外,建议改用 .length
,以防以后要更改 edittedInfo
的大小。