我有一个 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 文件中的数据?
中的
value
变量
for (var value in data_ita) {
不是数组的一项,而是一个 属性。
如果您想获得物品,请做
for (var value of data_ita) {
(注意:for而不是in)
通过跑步
lista_data_ita.push(x); //point 2
,
您在数组中写入了属性,这(我猜)使其不可迭代。