将对象数组减少/过滤为新的对象数组。
问题描述:
假设我有对象数组,我需要用前一个数据创建一个新的对象数组。在我的情况下,我需要过滤没有所有的数据。什么是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
}]
答
使用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);
答
你可以采取白名单的通缉键。
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);
这个问题应该被标记为重复。 –
因此投票结束而不是评论答案@ Alexandru-IonutMihai – baao