2013-07-23 57 views
2

發現使用密鑰對象名單,基本上我有一個像這樣的對象 -創建映射出物體

var data= [ 
{ id: 1, 
objectType: 'Workstation', 
isUp: true 
}, 
{ id: 2, 
objectType: 'Workstation', 
isUp: true 
}, 
{ id: 3, 
objectType: 'Workstation', 
isUp: false 
}, 
{ id: 4, 
    objectType: 'Workstation', 
    isUp: true 
}, 
{ id: 5, 
    objectType: 'Workstation', 
    isUp: false 
}, 
{ id: 6, 
    objectType: 'Server', 
    isUp: true 
}, 
{ id: 7, 
    objectType: 'Server', 
    isUp: true 
}, 
{ id: 8, 
    objectType: 'Server', 
    isUp: false 
}, 
{ id: 9, 
    objectType: 'Server', 
    isUp: false 
} 
] 

其中「ISUP」是在線還是離線對象狀態。

我想這個轉換成 -

{ 
'Workstation':{online_count:3, offline_count:2}, 
'Server':{online_count:2, offline_count:2} 
} 

任何幫助表示讚賞!

回答

1

我DIS腳本您:

var data= [ 
    { id: 1, 
    objectType: 'Workstation', 
    isUp: true 
    }, 
    { id: 2, 
    objectType: 'Workstation', 
    isUp: true 
    }, 
    { id: 3, 
    objectType: 'Workstation', 
    isUp: false 
    }, 
    { id: 4, 
     objectType: 'Workstation', 
     isUp: true 
    }, 
    { id: 5, 
     objectType: 'Workstation', 
     isUp: false 
    }, 
    { id: 6, 
     objectType: 'Server', 
     isUp: true 
    }, 
    { id: 7, 
     objectType: 'Server', 
     isUp: true 
    }, 
    { id: 8, 
     objectType: 'Server', 
     isUp: false 
    }, 
    { id: 9, 
     objectType: 'Server', 
     isUp: false 
    } 
    ] 
var finalData = new Array(); 
data.forEach(function (item) { 
    var found = false; 
    for (var i = 0; i < finalData.length; i++) { 
     if (finalData[i].objType == item.objectType) { 
      if (item.isUp) 
       finalData[i].online_count++; 
      else 
       finalData[i].offline_count++; 
      found = true; 
     } 
    } 
    if (!found) { 
     var newObj = new Object(); 
     newObj.objType = item.objectType; 
     newObj.online_count = item.isUp ? 1 : 0; 
     newObj.offline_count = item.isUp ? 0 : 1;   
     finalData.push(newObj); 
    }  
}); 
console.log(finalData); 
+0

非常感謝你! –

0

我想這會做到這一點:

var result = { 
    Workstation: { 
     online_count: 0, 
     offline_count: 0 
    }, 
    Server: { 
     online_count: 0, 
     offline_count: 0 
    } 
}; 
data.forEach(function (item) { 
    item.isUp ? result[item.objectType]['online_count']++ : result[item.objectType]['offline_count']++; 
}); 
+1

感謝您對本版本 –