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



我正在编写一个脚本,其中我有一个来自工作表列的第一个 ID 列表:

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);
};
}

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

您可以使用对象或映射来存储第二个数组的键、值:

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();

最新更新