如何解决如何使用 Angular Pipe 减少数组中对象的元素
我有这样的列表:
async createCsv(result) {
const arrData = result.data
const aliases = result.aliases
let csvContent = [
Object.keys(arrData[0]).map(item => aliases[item]).join(";"),...arrData.map(item => Object.values(item).join(";"))
]
.join("\n")
.replace(/(^\[)|(\]$)/gm,"");
const data = new Blob([csvContent],{
type: "text/csv;charset=windows-1251;"
});
const link = document.createElement("a");
link.setAttribute("href",URL.createObjectURL(data));
link.setAttribute("download",(new Date).toLocaleString() + ".csv");
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
现在,我想用reduce方法添加中心的所有值,其中包括:'APP'和'AD',并将标签更改为'APP',所以在这个列表示例中,我创建了管道必须返回: APP:209(总计)和LFFFAD:78
管道:
[{"center":"LFEEAPP","cause":"S ","total":66},{"center":"LFFFAD","cause":"S","total":78},{"center":"LFMMAPP","cause":"C","total":143},"cause":"T","total":0}]
如何将“AD”字符串添加到过滤器中以获取: APP:287(APP:209 + LFFFAD:78) 感谢您的帮助
解决方法
export class MergeCentresAppPipe implements PipeTransform {
transform(listCount: ListCount[]): ListCount[] {
const totalCenterApp = listCount
.filter(count => count.center.includes('APP') || count.center.includes('AD')))
.map(count => count.total)
.reduce((sum,current) => sum + current,0);
const centerApp: ListCount = {
center: 'APP',cause: '',total: totalTimeCenterApp,};
const centerMerged = listCount.filter(count => !count.center.includes('APP') && !count.center.includes('AD'));
centreMerged.push(centerApp);
return centerMerged;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。