У меня есть 2 массива, и я хотел бы создать многомерный массив для каждого магазина.В результате значение «фрукты» и «овощ» не является суммой каждого, результат - сумма баллов (сумма каждого фрукта или овоща * оценка каждого)
var myArray = [{
shop: "shop1",
item1: "my apple 0",
item2: "my carrot 1",
}, {
shop: "shop1",
item1: "my apple 0",
item2: "my carrot 1",
}, {
shop: "shop1",
item1: "my apple 1",
item2: "my carrot 0",
},
{
shop: "shop2",
item1: "my apple 1",
item2: "my carrot 1",
}, {
shop: "shop2",
item1: "my apple 1",
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
}
]
Этомоя функция
const count = myArray
.reduce((a, o) => a.concat(Object.values(o)), [])
.reduce((c, v) => ({ ...c,
[v]: (c[v] || 0) + 1
}), {});
const list = Object.entries(count)
// map to {type, count}
.map(([item, number]) => ({
item,
number
}));
const indices = MyArrayDefinition.map((e) => e.item);
const combinaison = list.map(e => Object.assign(e, MyArrayDefinition[indices.indexOf(e.item)]));
var result = _.map(combinaison, function(elt) {
return ({
item: elt.question,
group: elt.group,
color: elt.color,
score: Number(elt.score),
number: elt.number,
totalPoints: elt.number * Number(elt.score)
});
});
var resultArray = {};
for (var i = 0; i < result.length; i++) {
if (!resultArray.hasOwnProperty(result[i].group)) {
resultArray[result[i].group] = 0;
}
resultArray[result[i].group] += result[i].totalPoints;
};
delete resultArray.undefined;
Я хотел бы получить такой результат: создать объект в каждом объекте "shop"
var resultArray = [{
id: 1,
shop: 'shop1',
itemGroup: {
fruit: 1,
vegetable: 2
}
},
{
id: 2,
shop: 'shop2',
itemGroup: {
fruit: 2,
vegetable: 2
}
}
]
Я пробую это
var out = _(groupByShop).map(function(g, key) {
return {
shop: key,
item: _(g).reduce((a, o) => a.concat(Object.values(o)), []).reduce((c, v) => ({ ...c,
[v]: (c[v] || 0) + 1
}), {}),
groupOfItems: Object.entries(_(g).reduce((a, o) => a.concat(Object.values(o)), []).reduce((c, v) => ({ ...c,
[v]: (c[v] || 0) + 1
}), {})).map(([item, total]) => ({
item,
total
}))
};
});