我正在尝试基于两个单独的JS对象中的值创建一个整合的JS对象。每个JS对象共享一个“键”,我想根据匹配键找到每个值。
例如,我必须使用JS对象:
cpuData.push({
id: myData.d.results[i].ID,
name: myData.d.results[i].Name,
description: myData.d.results[i].Description,
deviceId: myData.d.results[i].DeviceItemID,
avgCPU: cpuAvg,
maxCPU: cpuMax,
minCPU: cpuMin
});
和
memoryData.push({
id: myData.d.results[i].ID,
name: myData.d.results[i].Name,
description: myData.d.results[i].Description,
deviceId: myData.d.results[i].DeviceItemID,
avgMem: memAvg,
maxMem: memMax,
minMem: memMin
});
我想要做的是创建一个NEW对象(finalResults []),它包含avgCPU,avgMem和deviceID,其中deviceID在两个对象中都是相同的。
我尝试使用嵌套for循环,并查看各种键,_等功能,但我不太清楚我是如何解决这个问题的。
for (i=0; i < cpuData.length; i++) {
for (j=0; j < memoryData.length; j++) {
if (memoryData[j].deviceId = cpuData[i].deviceId) {
finalResults.push({
deviceId: memoryData[j].deviceId,
cpuComponentId: cpuData[i].id,
memComponentId: memoryData[j].id,
avgCPU: cpuData[i].avgCPU,
avgMemory: memoryData[j].avgMem
});
}
}
}
问题是当多个内部循环匹配发生时,我正在为外部循环获取重复项。例如,如果给定的deviceID有多个memoryData.avgMemory值,那么我将获得包含冗余cpuData,avgCPU值的每个memoryData.avgMemory的多个对象条目。
理想情况下,每个不同deviceID的单个对象包含一个或多个avgCPU和avgMemory值(数组很好)。