【发布时间】:2020-10-08 21:34:44
【问题描述】:
我有一个关于在数组中查找对象计数的问题。 我的数组是这样的:
completePositions: any = [
{
totalPositions: [
{ position: "CNA", count: 2 },
{ position: "LVN", count: 5 },
{ position: "RNA", count: 8 }
]
},
{
totalPositions: [
{ position: "CNA", count: 13 },
{ position: "LVN", count: 11 },
{ position: "RNA", count: 15 }
]
}
];
我试图在 totalPositions 数组中找到每个位置的总数,这样我的最终数组将如下所示:
totalPositionsCount = [
{ position: "CNA", count: 15 },
{ position: "LVN", count: 16 },
{ position: "RNA", count: 23 }
];
我创建了一个函数来对“totalPositons”数组中的每个位置求和并将总和推送到totalPositionsCount。我的函数完成了这项工作,我得到了总数,但它改变了父数组“completePositions”,并且“completePositions”的第一个“totalPositions”被“totalPositionsCount”数组替换。我尝试创建“completePositions”的备份并将其用于计算,但两个数组第一个“totalPositions”仍然被“totalPositionsCount”数组替换。
我总结位置的函数是:
codeToShowTotalResources() {
for (let totPos of this.completePositions) {
for (let eachPos of totPos.totalPositions) {
console.log("eachPos", eachPos);
let postCountIndex = this.totalPositionsCount.findIndex(
pos => pos.position == eachPos.position
);
if (postCountIndex != -1) {
console.log("Already exists, sum up positions");
let positionCount = this.totalPositionsCount[postCountIndex].count + eachPos.count;
this.totalPositionsCount[postCountIndex].count = positionCount;
} else {
console.log("Add it for first time");
this.totalPositionsCount.push(eachPos);
}
}
}
}
如果我用this.totalPositionsCount[postCountIndex] = { position: eachPos.position, count: positionCount }; 替换this.totalPositionsCount[postCountIndex].count = positionCount;,那么它工作得很好。我想知道我做错了什么,或者它应该以这种方式工作。
我在stackblitz 中打开了一个示例项目 任何帮助都会很棒:)
【问题讨论】:
标签: javascript arrays typescript