我收到 arr.push is not a function 錯誤,我不知道為什么。有很多與此相關的問題,但我找不到解決方案 - 似乎它應該作業。我錯過了什么嗎?我想了解這里發生了什么。
我相信這與我正在使用的 for...of 回圈有關。我應該嘗試以某種方式使用常規 for 回圈嗎?如果這是問題,為什么會發生這種情況?我在這里缺少什么規則?
JS(api 需要一兩分鐘):
let zoneArr = [];
fetch('https://hazards.fema.gov/gis/nfhl/rest/services/public/NFHL/MapServer/28/query?where=1=1&text=&objectIds=&time=&geometry={"points":[[-83.37872222,38.69880556],[-83.4914,38.7967],[-83.5158,39.0125],[-82.19744444,40.80505556],[-82.31222222,40.85666667],[-82.26127778,40.62986111],[-82.36422222,40.77169444],[-80.57108333,41.90666667],[-80.95447222,41.68336111],[-80.77036111,41.58586111],[-80.75966667,41.73586111],[-81.9569,39.4003],[-81.8708,39.2044],[-82.0806,39.4861],[-82.1868889,39.2517778],[-82.2122,39.4417],[-85.2122,41.5555]]}&geometryType=esriGeometryMultipoint&inSR=4326&spatialRel=esriSpatialRelIntersects&distance=&units=esriSRUnit_Foot&relationParam=&outFields=FLD_ZONE, ZONE_SUBTY&returnGeometry=false&returnTrueCurves=false&maxAllowableOffset=&geometryPrecision=&outSR=&havingClause=&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&returnZ=false&returnM=false&gdbVersion=&historicMoment=&returnDistinctValues=false&resultOffset=&resultRecordCount=&returnExtentOnly=false&datumTransformation=¶meterValues=&rangeValues=&quantizationParameters=&featureEncoding=esriDefault&f=pjson')
.then(function (response) {
return response.json();
})
.then (function (data) {
appendData1(data);
})
.catch(function (err) {
console.log('error: ' err);
});
function appendData1(data) {
for (let obj of data['features']) {
var zone = obj['attributes']['FLD_ZONE'];
zoneArr = zoneArr.push(zone);
}
console.log(zoneArr);
}
uj5u.com熱心網友回復:
push改變原始陣列并回傳一個新的長度。所以你zoneArr在第一次迭代后重新分配為一個數字。
zoneArr = zoneArr.push(zone);只替換zoneArr.push(zone);
let zoneArr = [];
fetch('https://hazards.fema.gov/gis/nfhl/rest/services/public/NFHL/MapServer/28/query?where=1=1&text=&objectIds=&time=&geometry={"points":[[-83.37872222,38.69880556],[-83.4914,38.7967],[-83.5158,39.0125],[-82.19744444,40.80505556],[-82.31222222,40.85666667],[-82.26127778,40.62986111],[-82.36422222,40.77169444],[-80.57108333,41.90666667],[-80.95447222,41.68336111],[-80.77036111,41.58586111],[-80.75966667,41.73586111],[-81.9569,39.4003],[-81.8708,39.2044],[-82.0806,39.4861],[-82.1868889,39.2517778],[-82.2122,39.4417],[-85.2122,41.5555]]}&geometryType=esriGeometryMultipoint&inSR=4326&spatialRel=esriSpatialRelIntersects&distance=&units=esriSRUnit_Foot&relationParam=&outFields=FLD_ZONE, ZONE_SUBTY&returnGeometry=false&returnTrueCurves=false&maxAllowableOffset=&geometryPrecision=&outSR=&havingClause=&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&returnZ=false&returnM=false&gdbVersion=&historicMoment=&returnDistinctValues=false&resultOffset=&resultRecordCount=&returnExtentOnly=false&datumTransformation=¶meterValues=&rangeValues=&quantizationParameters=&featureEncoding=esriDefault&f=pjson')
.then(function(response) {
return response.json();
})
.then(function(data) {
appendData1(data);
})
.catch(function(err) {
console.log('error: ' err);
});
function appendData1(data) {
for (let obj of data['features']) {
var zone = obj['attributes']['FLD_ZONE'];
zoneArr.push(zone);
}
console.log(zoneArr);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/504561.html
標籤:javascript 数组 目的 数组推送 循环
