2017-08-23 3 views
0

Ich möchte Daten rekonstruieren Karte verwenden, wie kann ich von diesem drehennormalisieren Daten mit Karte fehlgeschlagen

[{ 
    date: "2017-08-19", 
    female_count: 4, 
    male_count: 5, 
    total_count: 9 
}, 
{ 
    date: "2017-08-20", 
    female_count: 120, 
    male_count: 14, 
    total_count: 134 
}] 

in diesem

[{ 
    date: "2017-08-19", 
    total: 9, 
    data: [{ 
     name: "male", 
     value: 4, 
     color: "blue" 
    },{ 
     name: "female", 
     value: 5, 
     color: "red" 
    }] 
}] 

Mein gescheiterter Versuch, ich bin bei drängen männlichen stecken und Weibchen zählen zu einer neuen Dateneigenschaft.

weiblich wird männlich überschreiben, nicht sicher, ich sollte Push verwenden. Brauche Hilfe.

Antwort

0

Basierend auf der @ alexmac-Lösung können Sie den map Callb schreiben ack als einzelnes Objekt:

let items = [{ 
 
    date: "2017-08-19", 
 
    female_count: 4, 
 
    male_count: 5, 
 
    total_count: 9 
 
    }, 
 
    { 
 
    date: "2017-08-20", 
 
    female_count: 120, 
 
    male_count: 14, 
 
    total_count: 134 
 
    } 
 
]; 
 

 
let newItems = items.map(item => ({ 
 
    date: item.date, 
 
    total: item.total_count, 
 
    data: [{ 
 
     name: "male", 
 
     value: item.male_count, 
 
     color: "blue" 
 
    }, 
 
    { 
 
     name: "female", 
 
     value: item.female_count, 
 
     color: "red" 
 
    } 
 
    ] 
 
})); 
 

 
console.log(newItems);

(die Klammern um den geschweiften Klammern zum Erstellen eines Objekts erforderlich sind, und keine Funktion Körper.)

1

Das Problem ist, dass Sie data als ein Objekt verwenden, nicht als ein Array, und Sie schreiben es für jedes Element neu. Deklarieren Sie es als ein Array: data: [], und verwenden Sie die Push-Methode, um Elemente hinzuzufügen.

let items = [ 
 
    { 
 
    date: "2017-08-19", 
 
    female_count: 4, 
 
    male_count: 5, 
 
    total_count: 9 
 
    }, 
 
    { 
 
    date: "2017-08-20", 
 
    female_count: 120, 
 
    male_count: 14, 
 
    total_count: 134 
 
    } 
 
]; 
 

 
let newItems = items.map(obj => { 
 
    let item = { 
 
    date: obj.date, 
 
    total: obj.total_count, 
 
    data: [] 
 
    }; 
 
    item.data.push({ 
 
    name: "male", 
 
    value: obj.male_count, 
 
    color: "blue" 
 
    }); 
 
    item.data.push({ 
 
    name: "female", 
 
    value: obj.female_count, 
 
    color: "red" 
 
    }); 
 
    return item; 
 
}); 
 

 
console.log(newItems);

0

Ich bin nicht sicher, wie Sie bei der Farbeigenschaft ankommen, aber wenn Sie Farbe betrachten aufgrund von Geschlecht, dies könnte eine Lösung

const input = [{ 
 
    date: "2017-08-19", 
 
    female_count: 4, 
 
    male_count: 5, 
 
    total_count: 9 
 
}, 
 
{ 
 
    date: "2017-08-20", 
 
    female_count: 120, 
 
    male_count: 14, 
 
    total_count: 134 
 
}] 
 

 
const output = input.map((v) => { 
 
    const data = [ 
 
    { 
 
     name: "male", 
 
     value: v.male_count, 
 
     color: "blue" 
 
    }, 
 
    { 
 
     name: "female", 
 
     value: v.female_count, 
 
     color: "red" 
 
    } 
 
    ]; 
 
    
 
    return { 
 
    date: v.date, 
 
    total: v.total_count, 
 
    data: data 
 
    }; 
 
}); 
 

 
console.log('>>>>output', output);

sein
Verwandte Themen