簡體   English   中英

JavaScript:如何將對象插入到對象數組中?

[英]JavaScript: How can I insert an Object into an Array of Objects?

我有這樣的腳本,從JSON幾乎100個數據中獲取數據,然后使用此數據從一個API,之后帶來的天氣,插入該數據為對象(使用for創建我的100個對象),我想將temperature > 99的對象添加到一個數組中,將temperature < 99的對象添加到另一個數組中, 感謝您的幫助!

這是我的腳本:

async function calcWeather(){ 
    const info = await fetch('../json/data.json')
    .then(function(response) {
        return response.json()
    }); 
    for (var i in info) {
        const _idOficina = info[i][0].IdOficina
        const _nombreOficina = info[i][0].NombreOficinaSN
        const _zona = info[i][0].Zona
        const _estado = info[i][0].NombreEstado
        const lat = info[i][0].latjson 
        const long = info[i][0].lonjson 
        const base = `https://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${long}&appid=${api_key}&units=metric&lang=sp`
        fetch(base)
        .then((responses) => {
            return responses.json()
        })
        .then((data) => {
            // console.log(data)
            var myObject = { 
                Id_Oficina: _idOficina,  
                Latitud: data.coord.lat,
                Longitud: data.coord.lon,
                Ciudad: data.name, 
                Estado: _estado,
                Zona: _zona,
                Nombre_Oficina: _nombreOficina,
                Temperatura: data.main.temp, 
                Descripcion: data.weather[0].description
            };  
            // validation
            if (myObject.Temperatura < 99){
                var lstValid = [];
                function pushValid(){
                    lstValid.push(myObject[i]);
                }
                pushValid();
                console.log(pushValid())
            }
        });   
    }    
};

您的數組是本地的,因此對於每個對象,您都創建了沒有先前數據的新lstValid數組。 解決方案是獲取數據之前或循環之前創建數組:

async function calcWeather(){
    var lstValid = []; // HERE
    const info = await fetch('../json/data.json')
    .then(function(response) {
        return response.json()
    }); 
    var lstValid = []; // OR HERE (ONLY ONE OF THEM)
   for (...) {
        ...
    }

由於您每次運行都清除它,因此您可能最好在該調用之外創建數組。 然后只需添加您的對象。 就像 Trincot 的評論一樣,我不確定你到底在索引什么。

async function calcWeather(){
    var lstValid = [];
    ....
   
    if (myObject.Temperatura < 99){
        lstValid[someindex] = myObject;
    }
    else{
        lstNotValid[someOtherIndex] = myObject;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM