javascript - 将字符串作为变量传递时,Array.indexOf() 找不到值?

标签 javascript google-sheets

我正在编写一个 Google 脚本来扩展 Google 电子表格。我正在尝试创建一个函数,通过在函数中传递标题来确定给定列的索引。

function columnIndexForHeader(header) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues()
  var headers = data[0]
  var index = data.indexOf(header) + 1
  Logger.log("Looking for header "+header)
  Logger.log("List of headers: "+headers)
  Logger.log("Header 12: "+headers[12])
  Logger.log("Index of History:"+headers.indexOf("History"))
  Logger.log("Requested index for header "+header+" is "+ index)
  return index
}

在上面的示例中,我正在查找名为“历史记录”的列标题,当前是电子表格中的第 13 列(因此数组中的索引为 12)。

当我调用我使用的函数时,例如:

currentSheet.getRange(i+1, columnIndexForHeader("History")).setValue("New")

现在使用字符串搜索 header 索引(与记录器示例一样)工作正常,但由于某种原因,在使用变量搜索时无法找到 header (向indexOf()返回-1。日志将显示以下内容:

[14-06-28 22:30:37:665 ICT] Looking for header History
[14-06-28 22:30:37:702 ICT] List of headers: ID,First-Last,Nick,Course,Section,Grade,Correspondence,Remarks,Attendence,Status,Program,Major,History,Nationality,LEP ID,Email (Stamford),Email (Private),Phone,
[14-06-28 22:30:37:703 ICT] Header 12:History
[14-06-28 22:30:37:703 ICT] Index of History:12
[14-06-28 22:30:37:703 ICT] Requested index for header History is 0

为什么从变量中找不到 header ,而传递字符串时似乎成功了?

最佳答案

您忘记了数组索引,

var headers = data[0];
var index = data[0].indexOf(header) + 1; // not data, data[0]!

或者,

var index = headers.indexOf(header) + 1; // using the variable from the previous line.

关于javascript - 将字符串作为变量传递时,Array.indexOf() 找不到值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24468425/

相关文章:

javascript - 复制元素伪 :hover styles using jQuery

javascript - 谷歌表格onedit特定单元格

excel - Google Sheets 数组公式与 Excel 有何不同(计数直至达到总和)

javascript - 匹配不同工作表上两列的文本字符串并使用谷歌脚本回发

xpath - Google 表格 IMPORTXML 查询

google-sheets - Google 电子表格,计数 IF 包含字符串

javascript - 如何匹配但排除正则表达式模式?

javascript - 我无法将 css 类添加到新元素

Javascript 来查看该 div 是否悬停

javascript - Chartjs 显示数字而不是时间