按键匹配JS对象,值

时间:2014-10-20 16:08:50

标签: javascript arrays javascript-objects

我正在尝试基于两个单独的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值(数组很好)。

0 个答案:

没有答案