Javascript:为什么我的indexof会返回找到值的行

问题描述

我编写此代码的目的是循环浏览名称列表。当代码在列表中找到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,12).setValues(edittedInfo);
 }

解决方法

解决方案:

  • index取值>=0,因此index+1取值>=1。这个 这就是为什么您的代码从第一行开始粘贴的原因。

如果要将信息粘贴到第17 行(包括第17行)之后,请进行以下修改:

waitingSheet.getRange(index + 1,1,12).setValues(edittedInfo);

对此:

waitingSheet.getRange(index + 17,edittedInfo.length,edittedInfo[0].length).setValues(edittedInfo);

因为index可以取值>=0,所以index + 17取值>=17是所需的起始行点。

此外,如果您想在以后更改.length的大小,建议改用edittedInfo


参考文献: