Istnieje szereg obiektów, takich jak ten, gdzie jest klucz "kategoria" i niektóre klucze "serii".
arrOne = [
{
"series_1": 25,
"category": "Category 1",
"series_2": 50
},
{
"series_1": 11,
"category": "Category 2",
"series_2": 22
},
{
"series_1": 32,
"category": "Category 1",
"series_2": 74
},
{
"series_1": 74,
"category": "Category 3",
"series_2": 98
},
{
"series_1": 46,
"category": "Category 3",
"series_2": 29
},
]
(Należy pamiętać, że "kategoria" może być praktycznie dowolną wartością, choć prawdopodobnie będzie kilka podobnych wartości, a także kilka unikalnych wartości, na przykład, istnieje kilka obiektów z wartością "kategoria ""Kategoria 3", ale tylko 1 z wartością "kategoria ""Kategoria 2")
W takich wierszach kodu zostaną zsumowane wszystkie serie 1 dla obiektów z tej samej kategorii
var objForAllCategories = {};
this.arrOne.forEach(item => {
if (objForAllCategories.hasOwnProperty(item.category))
objForAllCategories[item.category] = objForAllCategories[item.category] + item.series_1;
else
objForAllCategories[item.category] = item.series_1;
});
for (var prop in objForAllCategories) {
this.allCategoriesAndValues.push({
category: prop,
series_1: objForAllCategories[prop]
});
}
W ten sposób, to by doprowadziło do:
allCategoriesAndValues = [
{
"category": "Category 1",
"series_1": 57 // 25 + 32 adding up series_1 from all 'Category 1' items in arrOne
},
{
"category": "Category 2",
"series_1": 11 // only 1 'Category 2' from arrOne
},
{
"category": "Category 3",
"series_1": 120 // 74 + 46 adding up series_1 from all 'Category 3' items in arrOne
}
]
Jednak chciałbym mieć możliwość dodawania nie tylko серии_1, ale i wszystkie inne elementy.
W tym przykładzie jako klucze są używane tylko kategorii i серии_1 i серии_2. Niemniej jednak, mogą być:
- серии_3
- серии_4
- seria 5
- seria 6
- seria 7
- itp..
Jak mogę wziąć pod uwagę wszystkie potencjalne serii x?
Przewidywany wynik:
allCategoriesAndValues = [
{
"category": "Category 1",
"series_1": 57,
"series_2": 124,
..... if 'series_3', 'series_4' etc. existed, it would be included in this as above
},
{
"category": "Category 2",
"series_1": 11,
"series_2": 22,
..... if 'series_3', 'series_4' etc. existed, it would be included in this as above
},
{
"category": "Category 3",
"series_1": 120,
"series_2": 127,
..... if 'series_3', 'series_4' etc. existed, it would be included in this as above
}
]
series_3: 5
tylko dla pierwszego obiektu, to kończy się takseries_3: NaN
w wyniku.