Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Manipolazione Array

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139

    Manipolazione Array

    Ciao a tutti,

    Sto sviluppando un progetto Laravel in cui mostro dei dati via Javascript in un grafico di tipo a barre sovrapposte.
    Ciò che vado a manipolare sono degli array composti da tributi, in particolare ho tre array:
    pagato, non pagato, non pagabile e possono avere lunghezze diverse.
    Ognuno è quindi composto da coppie chiave valore, per esempio:

    pagato = [{tot: 10, tributo: TRIBUTO1}, {tot: 4, tributo: TRIBUTO2}, ....];
    non_pagato = [{tot: 10, tributo: TRIBUTO2}, {tot: 3, tributo: TRIBUTO4}, ....];
    non_pagabile = [....];

    Ho quindi la necessità di creare un array labels contenente in modo univoco i tributi, presi dai tre array precedenti.

    labels = [TRIBUTO1, TRIBUTO2, TRIBUTO3];

    e poi per ognuno dei tre array creare l'array corrispondente con il solo valore numerico relativo al totale.
    In particolare, se l'array padre continene una delle etichette presenti in labels allora prendo il tot dall'array padre, altrimenti setto nell'array figlio il valore 0.

    Non ho idea di come realizzarlo, avete suggerimenti o consigli? Vi è un modo più semplice?

    Grazie a tutt!

  2. #2
    Utente di HTML.it L'avatar di ninja72
    Registrato dal
    May 2020
    residenza
    -
    Messaggi
    319
    Intendi in questo modo ?
    codice:
    const TRIBUTO1 = 1
    const TRIBUTO2 = 2
    const TRIBUTO4 = 4
    
    const pagato = [
        { tot: 10, tributo: TRIBUTO1 },
        { tot: 4, tributo: TRIBUTO2 }
    ]
    const non_pagato = [
        { tot: 10, tributo: TRIBUTO2 },
        { tot: 3, tributo: TRIBUTO4 }
    ]
    const non_pagabile = []
    
    const joinData = [...pagato, ...non_pagato, ...non_pagabile]
    // labels
    const labels = [...new Set(joinData.map(obj => obj['tributo']))]
    //total
    const total = joinData.reduce((sum, obj) => {
        return sum + obj['tot']
    }, 0)
    
    console.log(`labels: ${labels}`)
    console.log(`total: ${total}`)

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139
    Ciao Ninja, grazie per l'aiuto.

    Esattamente, intendo qualcosa del genere, dove però l'array joinData deve avere pagato, non_pagato, non_pagabile della stessa lunghezza.

    Per esempio, supponiamo di avere solo i tributi: TRIBUTO1, TRIBUTO2, TRIBUTO3, TRIBUTO4.

    dovrei avere questo risultato qui:
    codice:
    const pagato =[
        { tot:10, tributo: TRIBUTO1 },
        { tot:4, tributo: TRIBUTO2 },
        { tot:0, tributo: TRIBUTO3 },
        {tot:0, tributo: TRIBUTO4 },
    ]
    const non_pagato =[
    
     {tot: 0, tributo: TRIBUTO1 },
    { tot:10, tributo: TRIBUTO2 },
    {tot: 0, tributo: TRIBUTO3},
    { tot:3, tributo: TRIBUTO4},
    ];
    
    const non_pagabile =[
    
    {tot: 0, tributo: TRIBUTO1 },
    { tot:0, tributo: TRIBUTO2 },
    {tot: 0, tributo: TRIBUTO3},
    { tot:0, tributo: TRIBUTO4},
    ];
    e poi joinData = [...pagato, ...non_pagato, ...non_pagabile];

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 © 2024 vBulletin Solutions, Inc. All rights reserved.