Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2021
    Messaggi
    38

    Come recuperare le sottochiavi di questo oggetto?

    Buongiorno, sto utilizzando javascript
    ho questa variabile di cui voglio recuperare le sottochiavi 3,"" ; 45,"" ecc...

    codice:
    var Struct={"0":{"3":true,"":true},"3":{"45":true,"":true},"Ciao":{"1":true,"2":true}}
    
    var numeroChiavi = Object.keys(Struct).length;
    console.log('numeroChiavi:'+ numeroChiavi);
    
    for(var i=0;i<numeroChiavi;i++)
    {
        console.log('sottoChiavi:'+ Object.keys(Struct[i]))
    }
    Con quesro codice ,mi da questo errore
    codice:
    TypeError: can't convert undefined to object"
    Qualcuno riesce ad aiutarmi?
    Grazie
    Ultima modifica di Chiello9; 04-03-2021 a 10:54

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Hai scritto questo codice:
    codice:
    for(var i=0;i<numeroChiavi;i++)
        console.log('sottoChiavi:'+ Object.keys(StrutturaIDVisita[i]))
    tuttavia la parte di accesso a StrutturaIDVisita è errata, perché la variabile "i" è un indice numerico mentre la variabile StrutturaIDVisita non è un array, quindi l'accesso con quella chiave restituirà senz'altro un valore inesistente (undefined, appunto).

    Forse volevi usare la chiave i-esima, invece che direttamente l'indice?

    In quel caso, devi salvare da qualche parte le chiavi ottenute da Object.keys() e utilizzare l'indice "i" per accedere alla chiave che ti interessa, usando quel valore per accedere a StrutturaIDVisita; ad esempio

    codice:
    var StrutturaIDVisita={"5":{"42":true,"":true},"66":{"69":true,"":true},"PAT004":{"43":true,"125":true}}
    
    var arrayChiavi = Object.keys(StrutturaIDVisita);
    var numeroChiavi = arrayChiavi.length;
    
    console.log('numeroChiavi:'+ numeroChiavi);
    
    for(var i=0; i<numeroChiavi; i++)
    {
      var chiave = arrayChiavi[i];
      console.log('sottoChiavi:'+ Object.keys(StrutturaIDVisita[chiave]));
    }
    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2021
    Messaggi
    38
    @alka ok adesso mi torna, grazie mille

  4. #4
    Utente di HTML.it L'avatar di ninja72
    Registrato dal
    May 2020
    residenza
    -
    Messaggi
    319
    Si potrebbe fare anche in questo modo, utilizzando l'iteratore [for ... in] specifico per gli oggetti, con un filtro in caso di dati misti.

    codice:
    const StrutturaIDVisita = {
        "5": { "42": true, "": true },
        "66": { "69": true, "": true },
        "PAT004": { "43": true, "125": true },
        'datoString': '1234',
        'datoArray' : [1,2,3,4,5]
    }
    
    for (const key in StrutturaIDVisita) {
        if (typeof StrutturaIDVisita[key] === 'object' && !Array.isArray(StrutturaIDVisita[key])) {
            console.log(`sottoChiavi: ${Object.keys(StrutturaIDVisita[key])}`)
        }
    }

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.