【问题标题】:Comparing values in an array (app script)比较数组中的值(应用程序脚本)
【发布时间】:2021-08-23 18:19:23
【问题描述】:

首先我是 Apps Script 和 Javascript 的新手。但是在带有 Apps Script 的 Google Sheets 中,我用一列的内容填充了一个数组。现在我想在这个数组中找到匹配的值。我使用 [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 子句永远不会成为真的,我不明白为什么。

【问题讨论】:

    标签: javascript arrays google-apps-script compare


    【解决方案1】:

    当您将getRange 用于多行时,它会在单独的子数组中返回每一行。 最终结果是一个二维数组,其中每个子数组代表一行。

    例如:

    [
      [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")
        }
    }
    

    【讨论】:

    • 非常感谢。我猜不可能将列的内容放入一维数组中?
    • 没有'native'方法,但是你可以使用let oneDarray = a.map(row =&gt; row[0])将它转换成一维数组
    猜你喜欢
    • 1970-01-01
    • 2021-10-12
    • 2023-03-31
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    相关资源
    最近更新 更多