Javascript 按键筛选对象属性,但将白名单中筛选的键保留为空

Javascript 按键筛选对象属性,但将白名单中筛选的键保留为空,javascript,node.js,Javascript,Node.js,我需要一些帮助来按键过滤对象属性,但将白名单中的过滤键保持为空 我正在使用此答案中的函数,因此: 预览: const-raw={ 项1:{键:'sdfd',值:'sdfd'}, 项2:{键:'sdfd',值:'sdfd'}, 项3:{键:'sdfd',值:'sdfd'} }; 允许的常量=['item1','item3']; const filtered=Object.keys(原始) .filter(键=>允许。包括(键)) .reduce((对象,键)=>{ obj[key]=原始[ke

我需要一些帮助来按键过滤对象属性,但将白名单中的过滤键保持为空

我正在使用此答案中的函数,因此:

预览:

const-raw={
项1:{键:'sdfd',值:'sdfd'},
项2:{键:'sdfd',值:'sdfd'},
项3:{键:'sdfd',值:'sdfd'}
};
允许的常量=['item1','item3'];
const filtered=Object.keys(原始)
.filter(键=>允许。包括(键))
.reduce((对象,键)=>{
obj[key]=原始[key];
返回obj;
}, {});

console.log(过滤)
由于在
筛选的
对象中需要所有允许的键,因此可以在
允许的
数组上循环,检查
白名单键是否存在于
原始对象中
,如果不存在
null
或所需值,只需添加键即可。下面是示例代码

const-raw={
项1:{键:'sdfd',值:'sdfd'},
项2:{键:'sdfd',值:'sdfd'},
};
允许的常量=['item1','item3'];
设过滤={}
允许。forEach(键=>{
过滤的[键]=(原始[键]==='未定义')?'':原始[键];
})

console.log(过滤),应该可以完成这个任务。使用
Array.prototype.reduce

const-raw=[{
“Id”:668,
“Projectd”:667,
“卧室数量”:2,
“建筑面积”:60,
“PrimaryRoomSpace”:60,
“landottype”:“无”,
“公寓号码”:“L-101\r”,
“出版物名称”:“L-101”,
“PublicationInformationId”:49,
“CaseStatusId”:227,
“CaseStatusType”:“就绪”,
“CaseStatusName”:“Salgsklar”,
“CaseReferralKey”:“80-17-10001”,
“询问价格”:10000000,
“EnergyLabel”:“无”,
“加热等级”:“无”,
“委员会”:0,
“成本基准”:10000000,
“价格表”:166666.666667,
“街道”:“街道1”,
“ZipCode”:“0682”,
“BuyerIds”:[],
“ResponsibleBrokerId”:0,
“BrokerId”:0
},
{
“Id”:669,
“Projectd”:667,
“卧室数量”:2,
“卧室数量最大”:2,
“建筑面积”:0,
“FloorSpaceMax”:100,
“PrimaryRoomSpace”:90,
“PrimaryRoomSpaceMax”:90,
“公寓号码”:“L-107\r”,
“CaseStatusId”:207,
“CaseStatusType”:“活动”,
“CaseStatusName”:“Oppdrag akseptert”,
“CaseReferralKey”:“80-17-10007”,
“存储”:1,
“EnergyLabel”:“无”,
“加热等级”:“无”,
“委员会”:0,
“DocumentCostBasis”:0,
“街道”:“街道2”,
“ZipCode”:“0682”,
“BuyerIds”:[],
“ResponsibleBrokerId”:0,
“BrokerId”:0
},
{
“Id”:670,
“Projectd”:667,
“卧室数量”:2,
“卧室数量最大”:2,
“建筑面积”:0,
“FloorSpaceMax”:100,
“PrimaryRoomSpace”:90,
“PrimaryRoomSpaceMax”:90,
“公寓号码”:“L-106\r”,
“CaseStatusId”:223,
“CaseStatusType”:“常规”,
“CaseStatusName”:“最佳过滤信息”,
“CaseReferralKey”:“80-17-10006”,
“存储”:1,
“EnergyLabel”:“无”,
“加热等级”:“无”,
“委员会”:0,
“DocumentCostBasis”:0,
“街道”:“街道1”,
“ZipCode”:“0682”,
“BuyerIds”:[],
“ResponsibleBrokerId”:0,
“BrokerId”:0
},
{
“Id”:671,
“Projectd”:667,
“卧室数量最大值”:1,
“建筑面积”:0,
“FloorSpaceMax”:50,
“公寓号码”:“L-102\r”,
“CaseStatusId”:219,
“CaseStatusType”:“常规”,
“CaseStatusName”:“所有信息mottatt”,
“CaseReferralKey”:“80-17-10002”,
“存储”:2,
“EnergyLabel”:“无”,
“加热等级”:“无”,
“委员会”:0,
“DocumentCostBasis”:0,
“PricePerSquareMeter”:0,
“街道”:“街道1”,
“ZipCode”:“0682”,
“BuyerIds”:[],
“ResponsibleBrokerId”:0,
“BrokerId”:0
}
]
const白名单=[“公寓编号”、“楼层空间”、“主要房间空间”、“案例状态类型”、“询问价格”];
raw.forEach(obj=>{
const filtered=白名单。reduce((acc,key)=>{
如果(输入obj){
acc[键]=obj[键]
}否则{
acc[键]=空
}
返回acc
}, {})
console.log(过滤);

})
你可以用更简单的方法来做

var输入=[
{
“Id”:668,
“Projectd”:667,
“卧室数量”:2,
“建筑面积”:60,
“PrimaryRoomSpace”:60,
“landottype”:“无”,
“公寓号码”:“L-101\r”,
“出版物名称”:“L-101”,
“PublicationInformationId”:49,
“CaseStatusId”:227,
“CaseStatusType”:“就绪”,
“CaseStatusName”:“Salgsklar”,
“CaseReferralKey”:“80-17-10001”,
“询问价格”:10000000,
“EnergyLabel”:“无”,
“加热等级”:“无”,
“委员会”:0,
“成本基准”:10000000,
“价格表”:166666.666667,
“街道”:“街道1”,
“ZipCode”:“0682”,
“BuyerIds”:[],
“ResponsibleBrokerId”:0,
“BrokerId”:0
},
{
“Id”:669,
“Projectd”:667,
“卧室数量”:2,
“卧室数量最大”:2,
“建筑面积”:0,
“FloorSpaceMax”:100,
“PrimaryRoomSpace”:90,
“PrimaryRoomSpaceMax”:90,
“公寓号码”:“L-107\r”,
“CaseStatusId”:207,
“CaseStatusType”:“活动”,
“CaseStatusName”:“Oppdrag akseptert”,
“CaseReferralKey”:“80-17-10007”,
“存储”:1,
“EnergyLabel”:“无”,
“加热等级”:“无”,
“委员会”:0,
“DocumentCostBasis”:0,
“街道”:“街道2”,
“ZipCode”:“0682”,
“BuyerIds”:[],
“ResponsibleBrokerId”:0,
“BrokerId”:0
},
{
“Id”:670,
“Projectd”:667,
“卧室数量”:2,
“卧室数量最大”:2,
“建筑面积”:0,
“FloorSpaceMax”:100,
“PrimaryRoomSpace”:90,
“PrimaryRoomSpaceMax”:90,
“公寓号码”:“L-106\r”,
“CaseStatusId”:223,
“CaseStatusType”:“常规”,
“CaseStatusName”:“最佳过滤信息”,
“CaseReferralKey”:“80-17-10006”,
“存储”:1,
“EnergyLabel”:“无”,
“加热等级”:“无”,
“委员会”:0,
“DocumentCostBasis”:0,
“街道”:“街道1”,
“ZipCode”:“0682”,
const filtered = {}

allowed.forEach((key) => {
  filtered[key] = (typeof raw[key] !== 'undefined') ? raw[key] : '';
});