Modifica oggetto in array

di il
4 risposte

Modifica oggetto in array

Ciao a tutti. Sto facendo un esercizio javascript dove si chiede di modificare il contatto di una rubrica una volta inserito. Il contatto inserito lo tratto come un oggetto:
let cont={ nome:nom, cognome: cog, tel:phone}
L'inserimento mi viene e ho usato questa funzione:

function ins(){
    
    readline.question("Input nome=  ", nom => {
        readline.question("Input cognome=  ", cog=> {
            readline.question("Input telefono=  ", phone=> {
                 cont={nome:nom, cognome:cog, tel:phone}; 
                   arr.push(cont);
                   counter++;
                     console.log( arr);
                      menu();
                      
    return arr;
    
});

});

    });
}
Quello che non riesco a fare è la modifica. O meglio, ho un array con gli oggetti come elementi,riesco anche a modificare l'elemento ma non me lo mette nella posizione corretta. Ho provato a sostituire un elemento con quello modificato ma quando vado a visualizzare l'intero array mi ritrovo il vecchio e il nuovo elemento. Posto il codice per maggiore chiarezza:

function mod(){
    readline.question("Input contatto=  ", nmb => {
        let idx=parseInt(nmb);
        console.log(arr[idx]);
        readline.question("Modifica contatto: nome= ", newnome =>{
            readline.question("Modifica contatto: cognome= ", newcog =>{
                readline.question("Modifica contatto: tel= ", newtel =>{
                    
        cont.nome=newnome;
        cont.cognome=newcog;
        cont.tel=newtel;
        
       console.log(cont, idx);
       
       menu(); 
    });
});
});
  
     
     }); 
    
   }

   function vis(){
    for(let i=0; i < arr.length;i++){
        console.log(arr[i],i);
    }
    menu();
   }
  

4 Risposte

  • Re: Modifica oggetto in array

    Se hai un array di questo tipo che dovrebbe rappresentare la tua rubrica
    con i contatti al suo interno, per effettuare le modifiche dovresti relazionarti in questo modo:

    arr[index].firstName = newnome

    arr[index] ti da il riferimento dell'oggetto contatto all'interno dell'array.

    [
    { firstName: 'mad', lastName: 'max', phone: '111' }
    { firstName: 'pippo', lastName: 'franco', phone: '000' }
    { firstName: 'peppa', lastName: 'piggy', phone: '333' }
    ]

    In alternativa potresti fare questa piccola rubrica direttamente con una classe.
  • Re: Modifica oggetto in array

    Grazie mille.Ora funziona. Non sapevo la sintassi da utilizzare.
  • Re: Modifica oggetto in array

    La sintassi si studia sui libri non su un forum
  • Re: Modifica oggetto in array

    tonyven ha scritto:


    
        readline.question("Input nome=  ", nom => {
            readline.question("Input cognome=  ", cog=> {
                readline.question("Input telefono=  ", phone=> {
    
    Un pezzo di codice scritto in questo modo è del tutto illeggibile: usa le Promise o vedi la documentazione.

    Se ti viene richiesto di inserire 30 campi invece di 3, il tuo codice si sposta talmente a destra che finisce fuori dalla stanza, oltreché dal monitor.
Devi accedere o registrarti per scrivere nel forum
4 risposte