比较数组中的值(应用程序脚本)

Comparing values in an array (app script)

首先,我分别是 Apps 脚本的新手 Javascript。然而,在 Google Sheets with Apps Script 中,我用一列的内容填充了一个数组。现在我想在这个数组中找到匹配的值。我用 [2,5,3,6,2,7] 之类的简单数组尝试了以下代码,并且代码有效。它不适用于列中的值(例如“110rt”或“38tzu0”):

let z = sheet.getRange("D2:D" + sheet.getLastRow())
let a = z.getValues()

for (let i = 0; i < a.length; i++) {
    for (let k = i + 1; k < a.length; k++) {
        if (a[i] == a[k]) {
            console.log("hit")
    }
}

}

所以在上面的代码中,if 子句永远不会变为真,我不明白为什么。

当您对多行使用 getRange 时,它 returns 每行在一个单独的子数组中。 最终结果是一个二维数组,其中每个子数组代表一行。

例如:

[
  [A1,B1,C1,...],
  [A2,B2,C2,...],
  [A3,B3,C3,...]
]

在你的情况下,你只有一列,看起来像这样:

[[2 ],[5 ],[3 ],[6 ],[2 ],[7]]
[[D2],[D3],[D4],[D5],[D6],[D7]] // the matching cells

底线是你需要迭代a[k][0]a[i][0]

let z = sheet.getRange("D2:D" + sheet.getLastRow())
let a = z.getValues()

for (let i = 0; i < a.length; i++) {
    for (let k = i + 1; k < a.length; k++) {
        if (a[i][0] == a[k][0]) {
            console.log("hit")
    }
}