Не уверен, как включить это в Parse, но как только вы получите ваши данные, вы можете запустить их с помощью следующей функции, чтобы получить нужные вам данные.
function groupBy(data, key) {
return data.reduce((groups, item) => {
if (groups[item[key]] === undefined) {
groups[item[key]] = item; // Only store the first one that matches
}
return groups;
}, {});
}
Существует три различных способа группировки.
groupBy
- Ваш желаемый результат groupByCount
- Количество предметов, которые в каждой категории groupByAll
- Все предметы, сгруппированные по их категории
let csvData = `
Product,Category,Price
Apple,Fruit,5
Orange,Fruit,3
Rice,Cereal,8
Grape,Fruit,6
`;
let jsonData = csvToJson(csvData, true);
console.log(groupBy(jsonData, 'Category'));
console.log(groupByCount(jsonData, 'Category'));
console.log(groupByAll(jsonData, 'Category'));
function groupBy(data, key) {
return data.reduce((groups, item) => {
if (groups[item[key]] === undefined) {
groups[item[key]] = item;
}
return groups;
}, {});
}
function groupByCount(data, key) {
return data.reduce((groups, item) => {
groups[item[key]] = (groups[item[key]] || 0) + 1;
return groups;
}, {});
}
function groupByAll(data, key) {
return data.reduce((groups, item) => {
groups[item[key]] = (groups[item[key]] || []).concat(item);
return groups;
}, {});
}
function csvToJson(csv, headersIncl) {
return (lines => {
return (headersIncl ? lines.slice(1) : lines).map((line) => {
return lines[0].reduce((obj, key, i) => {
return Object.assign(obj, {
[headersIncl ? key : i]: line[i]
});
}, {});
});
})(csv.trim().split('\n').map(line => line.trim().split(/\s*,\s*/g)));
}
.as-console-wrapper { top: 0; max-height: 100% !important; }