比较数组中的值(应用程序脚本)
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")
}
}
首先,我分别是 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")
}
}