将 jason 文件中的数据分配给 fetch() 之外的数组,以便使用用户输入来过滤 jason 文件数据[重复]

问题描述 投票:0回答:1

我有一个 json 文件,其结构如下:

{"x":[
    {
       "Ids":"2",
       "Titolo":"2-bando internazionalizzazione Marche - primo semestre 2024",
       "Data_apertura":"16/07/2024",
       "Data_chiusura_check":"---",
       "Data_chiusura":"22/07/2024",
       "Tipo_agevolazione":"contributo, fondo perduto, cofinanziamento",
       "Settori":"agroalimentare, ambiente, energia, IT & nuove tecnologie",
       "Ammontare_beneficio":"fino a 10.000 euro",
       "Ambito_territoriale":"Marche",
       "Attività":"partecipazione a fiere",
       "Obiettivo_Beneficio":"internazionalizzazione, fiere",
       "Percentuale_copertura":"60%",
       "Spese_ammesse":"generali",
       "Beneficiari":"PMI, startup",
       "Altri_beneficiari":"microimpresa",
       "Altri_settori":"---",
       "Altre_info":"---",
       "Stanziamento_bando":"800.000 euro",
       
    },
    {
       "Ids":"4",
       "Titolo":"4-bando certificazioni 2024 - cciaa Toscana nord ovest",
       "Data_apertura":"03/06/2024",
       "Data_chiusura_check":"---",
       "Data_chiusura":"30/06/2024",
       "Tipo_agevolazione":"contributo, fondo perduto, cofinnaziamento",
       "Settori":"agroalimentare, ambiente, energia, IT & nuove tecnologie",
       "Ammontare_beneficio":"fino a 5.000 euro",
       "Ambito_territoriale":"Toscana",
       "Attività":"adozione di sistemi di gestione certificati o l’acquisizione di certificazioni di prodotto o professionali",
       "Obiettivo_Beneficio":"sostegno agli investimenti, certificazioni",
       "Percentuale_copertura":"60%",
       "Spese_ammesse":"servizi professionali",
       "Beneficiari":"PMI, startup",
       "Altri_beneficiari":"grande impresa, microimpresa",
       "Altri_settori":"agricoltura, silvicoltura e pesca, alberghiero, altri servizi, artigianato, autoveicoli, mezzi di trasporto, chimica, farmaceutica, commercio, cultura, edilizia, elettronica, fornitura energia, acqua e gestione rifiuti, ICT, meccanica, metallurgia, mobili, legno, carta, moda, tessile, ristorazione, salute, servizi di trasporto, turismo",
       "Altre_info":"---",
       "Stanziamento_bando":"300.000 euro",
       
    },
    {
       "Ids":"5",
        "Titolo":"5-bando efficienza energetica 2024 - cciaa trento",
       "Data_apertura":"03/06/2024",
       "Data_chiusura_check":"---",
       "Data_chiusura":"07/06/2024",
       "Tipo_agevolazione":"contributo, fondo perduto, cofinanziamento",
       "Settori":"agroalimentare, ambiente, energia, IT & nuove tecnologie",
       "Ammontare_beneficio":"a partire da 2.000 euro fino a 10.000 euro",
       "Ambito_territoriale":"Trentino-Alto Adige, Südtirol",
       "Attività":" - attivare verifiche energetiche e/o di fattibilità per il risparmio energetico; - individuare soluzioni sull’efficientamento energetico degli edifici produttivi; - promuovere processi di razionalizzazione energetica dei cicli produttivi;  - introdurre processi innovativi, sistemi di building automation volti al risparmio di energia, costituire delle CER.",
       "Obiettivo_Beneficio":"transizione ecologica, digitalizzazione, innovazione, R&S",
       "Percentuale_copertura":"70%",
       "Spese_ammesse":"personale, impianti, macchinari, attrezzature",
       "Beneficiari":"PMI, startup",
       "Altri_beneficiari":"microimpresa",
       "Altri_settori":"agricoltura, silvicoltura e pesca, alberghiero, altri servizi, artigianato, autoveicoli, mezzi di trasporto, chimica, farmaceutica, commercio, cultura, ICT, meccanica, metallurgia, mobili, legno, carta, moda, tessile, ristorazione, salute, servizi di trasporto, turismo",
       "Altre_info":"efficientamento energetico edifici produttivi, razionalizzazione energetica cicli produttivi, risparmio energetico, building automation, costruzioni CER",
       "Stanziamento_bando":"300.000 euro",
       
    },
    [...]
]}

我使用以下脚本来提取并选择我需要的数据:

const lista_data_ita = [];

fetch("/wp-content/themes/blocksy-child/uploads/maggio24_Ita.json")
    .then((res) => res.text())
    .then((text) => {
        var data = JSON.parse(text);
        console.log(data);
        
        data_ita = Object.values(data.fondi_ita); 
        console.log(data_ita); //point 1

        for (var value in data_ita) {
            
            const x = data_ita[value];              
            console.log(x);

            lista_data_ita.push(x); //point 2
        }
    });
console.log(lista_data_ita); //point 3

当我到达 // 注释中的第 3 点时,控制台不会返回与 // 注释中的第 1 点相同的数组

Array(101) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, … ]
,但是一个不可迭代的数组,因此不能用于我的目的:

Array [] 
0: Object {...}
1: Object {...}
2: Object {...}
3: Object {...}
[...]

如果我没有这个问题,下一步将是:

function risultati(lista_data_ita, rbeneficiario) {
    
    const results_ben = [];
    
    rbeneficiario.forEach(function (entry) {
        
        let res = Object.values(lista_dati_ita).filter(x => x.Beneficiari.toLowerCase().includes(entry.toLowerCase()));
        
        if (!results_ben.includes(res)) {
                results_ben.push(res);
        }       
    });

    return results_ben;    
}

鉴于我已经尝试过其他方法,这些方法允许我使用比 fetch() 更有弹性的方法,例如 await,但这给我加载数据带来了问题: 为什么两个数组不同? 有没有办法从 fetch() 获取像第 1 点中的数据数组? 最终,我如何创建一个函数,允许我根据用户输入触发的变量来操作 json 文件中的数据?

javascript arrays json javascript-objects fetch-api
1个回答
0
投票

中的
value

变量

for (var value in data_ita) {

不是数组的一项,而是一个 属性

如果您想获得物品,请做

for (var value of data_ita) { 
(注意:for而不是in

通过跑步

lista_data_ita.push(x); //point 2
,

您在数组中写入了属性,这(我猜)使其不可迭代。

© www.soinside.com 2019 - 2024. All rights reserved.