Bir 'kategori' anahtarının ve bazı 'seri' anahtarlarının bulunduğu so gibi bir dizi nesne vardır.
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
},
]
('Kategori' nin hemen hemen her değer olabileceğini unutmayın, ancak muhtemelen birden fazla benzer değerin yanı sıra bazı benzersiz değerler de olacaktır, örneğin 'kategori' değeri 'Kategori 3' olan birden çok nesne vardır, ancak 'kategori' değeri 'Kategori 2'olan yalnızca 1)
Aşağıdaki kod satırları, aynı kategoriye sahip nesneler için series_1'in tümünü ekleyecektir
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]
});
}
Bu yüzden sonuçlanır:
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
}
]
Ancak, sadece series_1 değil, diğer tüm öğeleri de ekleyebilmek istiyorum.
Bu örnekte yalnızca kategori ve series_1 ve series_2 tuşları bulunur. Ancak, olabilir:
- seriler_3
- seriler_4
- seriler_5
- series_6
- seriler_7
- vb..
Tüm potansiyel series_x'leri nasıl açıklayabilirim?
Amaçlanan sonuç:
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
sadece ilk nesneye, şu şekilde sonuçlanırseries_3: NaN
sonuç olarak.