代码之家  ›  专栏  ›  技术社区  ›  Simon Breton

比较1D和2D数组,并在与Google应用程序脚本匹配时返回2D数组的值

  •  0
  • Simon Breton  · 技术社区  · 6 年前

    var firstArray = [1,5,4,8]
    

    然后使用我的脚本,我获取一个API,它将返回第二个ID列表,其中包含与它们相关联的值(如果需要,可以是键值对)

    var secondArray = [[5,"foo"],[6,"bar"],[7,"blaa"]]
    

    我想比较这两个数组,并在ID匹配时通过工作表中第二个数组中的API获取的值。

    IDs Values
    1
    5   foo  
    4
    8
    

    现在我被困在下面的脚本中:

      for(var line in firstArray) 
    {
    
     var isMatched = secondArray.indexOf(firstArray[line]); 
     if (isMatched !== -1) 
     {
       //do something
       ss.getRange(line, 3, 1, 1).setValue(valuesFromsecondArray);
     };
    }
    

    我想遍历第一个数组,当与第二个数组匹配时,我想从第一个数组捕获索引,这样我就可以在工作表的右边一行传递值

    0 回复  |  直到 6 年前
        1
  •  1
  •   TheMaster    6 年前

    您可以使用对象或 map 要存储密钥,第二个数组的值:

    function compareTest(){
    const firstArray = [1,5,4,8];
    const secondArray = [[5,"foo"],[6,"bar"],[7,"blaa"]];
    const sMap = new Map(secondArray);
    const output = firstArray.map(num=>{
      return sMap.has(num) ? [num, sMap.get(num)] : [num, null]
    });
    console.log(output);
    /*SpreadsheetApp.getActive()
    .getSheetByName("Sheet1")
    .getRange(2, 3, output.length, output[0].length)
    .setValues(output);*/
    }
    compareTest();