我正在编写一个脚本,其中我有一个来自工作表列的第一个 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();