2017-09-06 144 views
0

假设我有对象数组,我需要用前一个数据创建一个新的对象数组。在我的情况下,我需要过滤没有所有的数据。什么是ES6的最佳解决方案。将对象数组减少/过滤为新的对象数组。

data = [{ 
deviceId:1 
deviceStatus:"Offline" 
deviceType:"Tag" 
isConfigured:true 
isEnabled:true 
isLocalized:false 
isMasterAssigned:false 
lastAliveMessage:null 
location:{roomId: 5, name: "Room_207", zones: null, plan: null} 
name:"Tag For sending an alarm" 
},{ 
deviceId:2 
deviceStatus:"Online" 
deviceType:"Tag" 
isConfigured:true 
isEnabled:true 
isLocalized:false 
isMasterAssigned:false 
lastAliveMessage:null 
location:{roomId: 6, name: "Room_208", zones: null, plan: null} 
name:"Some Text" 
}] 

我需要过滤只需要的数据。

filteredData=[{ 
    deviceId:2 
    deviceStatus:"Online" 
    deviceType:"Tag" 
    lastAliveMessage:null 
    name: 'name:"Some Text' 
    location: location.name 
},{ 
    deviceId:2 
    deviceStatus:"Online" 
    deviceType:"Tag" 
    lastAliveMessage:null 
    name: 'name:"Some Text' 
    location: location.name 
}] 

回答

4

使用Array#map函数遍历它们并创建另一种类型的对象。

const data = [{ 
 
    deviceId:1, 
 
    deviceStatus:"Offline", 
 
    deviceType:"Tag", 
 
    isConfigured:true, 
 
    isEnabled:true, 
 
    isLocalized:false, 
 
    isMasterAssigned:false, 
 
    lastAliveMessage:null, 
 
    location:{roomId: 5, name: "Room_207", zones: null, plan: null}, 
 
    name:"Tag For sending an alarm" 
 
},{ 
 
    deviceId:2, 
 
    deviceStatus:"Online", 
 
    deviceType:"Tag", 
 
    isConfigured:true, 
 
    isEnabled:true, 
 
    isLocalized:false, 
 
    isMasterAssigned:false, 
 
    lastAliveMessage:null, 
 
    location:{roomId: 6, name: "Room_208", zones: null, plan: null}, 
 
    name:"Some Text" 
 
}]; 
 

 
const newObj = data.map(item => ({ 
 
    deviceId: item.deviceId, 
 
    deviceStatus: item.deviceStatus, 
 
    deviceType: item.deviceType, 
 
    lastAliveMessage: item.lastAliveMessage, 
 
    name: item.name, 
 
    location: item.location.name 
 
})); 
 

 
console.log(newObj);

+0

这个问题应该被标记为重复。 –

+0

因此投票结束而不是评论答案@ Alexandru-IonutMihai – baao

0

你可以采取白名单的通缉键。

var data = [{ deviceId: 1, deviceStatus: "Offline", deviceType: "Tag", isConfigured: true, isEnabled: true, isLocalized: false, isMasterAssigned: false, lastAliveMessage: null, location: { roomId: 5, name: "Room_207", zones: null, plan: null }, name: "Tag For sending an alarm" }, { deviceId: 2, deviceStatus: "Online", deviceType: "Tag", isConfigured: true, isEnabled: true, isLocalized: false, isMasterAssigned: false, lastAliveMessage: null, location: { roomId: 6, name: "Room_208", zones: null, plan: null }, name: "Some Text" }], 
 
    keys = ['deviceId', 'deviceStatus'], 
 
    result = data.map(o => Object.assign(...keys.map(k => ({ [k]: o[k] })))); 
 

 
console.log(result);