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 可以取值 >=0index + 17 取值 >=17,这是所需的起始行点。

此外,建议改用 .length,以防以后要更改 edittedInfo 的大小。


参考文献: