我有一个关于查找数组中对象的计数的问题。我的数组是:
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 }
];
我创建了一个函数来求和“总位置”数组中的每个位置,并将总和推入总位置计数。我的函数完成了这项工作,我得到了总计数,但它改变了父数组“完整位置”,第一个“完整位置”的“总位置”被“总位置计数”数组替换。我试图创建一个备份的完整位置,并使用它的计算,仍然两个数组第一个总位置被替换为总位置计数数组。
我总结立场的职能是:
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);
}
}
}
}
如果我替换此.totalPositionScont[postCountIndex].count=positionCount this.totalPositionScont[postCountIndex]={position:eachPos.position,count:positionCount}编码> 然后它就可以正常工作了。我想知道我做错了什么,还是应该这样做。
我已经在stackblitz中打开了一个示例项目,任何帮助都将非常有用:)
执行此操作时:this.totalpositionscont.push(eachPos)
,变量eachPos
表示来自completedpositions
的条目。所以现在this.totalPositionsCount
和this.completePositions
都引用了同一个对象。如果修改该对象,更改将显示在两个位置,因为它是同一个对象。
这里有一个替代方法,使用减少和每个:
const completePositions = [
{
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}
]
}
];
const totals = completePositions
.map(x => x.totalPositions)
.reduce((acc, totalPositions) => {
totalPositions.forEach(({position, count}) => {
acc[position] = (acc[position] || 0) + count;
})
return acc;
}, {})
console.log(totals);
问题内容: 我知道以前也曾问过类似的问题,但是这个问题有些不同。我有一个未命名对象的数组,其中包含一个已命名对象的数组,我需要获取“名称”为“字符串1”的对象。这是一个示例数组。 更新: 我应该早先说过,但是一旦找到它,我想用一个编辑过的对象替换它。 问题答案: 您可以遍历数组并测试该属性:
问题内容: 我有一个像这样的JSON对象: 我为特定的“ id”提供了“名称”的新值。如何在任何对象内替换特定“ id”的“名称”? 以及如何计算所有对象之间的组总数? 例如:将名称替换为“ test grp45”,ID =“ test1” 这是小提琴 http://jsfiddle.net/qLTB7/21/ 问题答案: 以下函数将搜索对象及其所有子对象/数组,并将键替换为新值。它会在全球范围内
问题内容: 我有一个数组: 我无法更改数组的结构。我正在传递ID为,我想获取数组中的该对象。 如何在JavaScript或jQuery中做到这一点? 问题答案: 使用方法: 从MDN: 如果数组中的元素满足提供的测试功能,则该方法返回数组中的第一个值。否则返回。 如果要查找其 索引 ,请使用: 从MDN: 该方法返回满足提供的测试功能的数组中第一个元素的索引。否则返回-1。 如果要获取匹配元素的数
问题内容: Swift在Underscore.js中是否有类似_.findWhere的内容? 我有一个类型为struct的数组,想检查array是否包含属性等于的struct对象。 尝试使用,但它们仅适用于基本类型,例如或。引发有关不符合协议之类的错误。 问题答案: FWIW,如果您不想使用自定义功能或扩展名,则可以: 首先生成数组,然后从中生成数组。 如果阵列很大,则可能需要执行以下操作: 或许
所以这个问题以前被问过,但我的情况有点不同,因为我已经尝试了这个网站中建议的所有解决方案,我有一个多提及数组: 我还有另一个小数组: 我只想找到与这个“dup”在同一行的“original”。到目前为止,我尝试了查找、过滤和grep,但这些都没有解决我的问题。 我尝试过的代码:
给定这样一组对象: 是否有一种方法可以使用ES6在一组对象中找到匹配的对象关键点(本例中为playerId),然后为这些匹配组合其他对象关键点(辅助和点),以便最终的数组如下所示: