2017-09-06 9 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);

関連する問題