更改值​in对象反映整个对象的最后一次更改.(Google AppScript)



我正在制作一个与fetchall类同时执行的请求列表,但当我将其放入重复循环或映射对象以将端点与值连接时,最后一个值最终存储在整个对象中:

function getMethod(rangeData, request, url, terminate){
var data = []
var requestsList = []
rangeData.map(function(item){
request['url'] = url + item + terminate
requestsList.push(request)
})
var response = UrlFetchApp.fetchAll(requestsList)

for (var i in response){
data.push(JSON.parse(response[i].getContentText()))
}
return data
}

我用日志做了一个测试,它确实遍历了我需要的所有ID,但当它写入对象时,它会在对象的所有项中执行。

我相信你想要的就是这个,只要它只是一个URL。

rangeData.forEach(function(item){
requestsList.push(url + item + terminate)
})

如果它是一个对象,那么:

rangeData.forEach(function(item){
let newRequest = JSON.parse(JSON.stringify(request));
newRequest.url = url + item + terminate;
requestsList.push(newRequest);
})

我意识到您使用的是Array.map((,它返回一个新数组。您应该使用Array.forEach((。

最新更新