Я хотел бы рассчитать процент каждого ключа в объектах.Я подсчитал общее количество каждого магазина (фрукты + овощи).И я хотел бы отобразить процент каждого фрукта или овоща в каждом магазине, а не их значения.
Percent = Фрукт или овощ каждого магазина / общее количество фруктов или овощей каждого магазина
в этой строке я хотел бы что-то вроде этого:
k(v).forEach(k => k.includes('item') &&
(s[(i = items[v[k]]).group] += (i.score/total)*100)), o), {});
это мой код и массивы
var myArray = [{
shop: "shop1",
item1: "my apple 1",
item2: "my carrot 1"
},
{
shop: "shop1",
item1: "my apple 1",
item2: "my carrot 1"
},
{
shop: "shop2",
item1: "my apple 0",
item2: "my carrot 0"
},
{
shop: "shop2",
item1: "my apple 0",
item2: "my carrot 1"
}
];
var MyArrayDefinition = [{
item: "my apple 0",
color: "red",
group: "fruit",
score: 0
},
{
item: "my carrot 1",
color: "orange",
group: "vegetable",
score: 1
},
{
item: "my apple 1",
color: "red",
group: "fruit",
score: 1
},
{
item: "my carrot 0",
color: "orange",
group: "vegetable",
score: 0
}
];
var k = Object.keys,
items = MyArrayDefinition.reduce((o, v) => (o[v.item] = v, o), {});
var shops = myArray.reduce((o, v, i, s) => (
s = v[k(v).find(k => k)],
s = o[s] || (o[s] = {
fruit: 0,
vegetable: 0,
}),
k(v).forEach(k => k.includes('item') &&
(s[(i = items[v[k]]).group] += i.score)), o), {});
var result = k(shops).map((k, i) => ({
id: i + 1,
shop: k,
itemGroup: shops[k],
total:Object.values(shops[k]).reduce((a, b) => a + b),
}));
Я хотел бы этот результат
[ { "id": 1, "shop": "shop1", "fruit": 50, "vegetable": 50 , "total": 4 }, { "id": 2, "shop": "shop2" "fruit": 0, "vegetable": 100 , "total": 1 } ]