Javascript 从对象数组中获取特定属性
我有如下结构的JavaScript对象数组:Javascript 从对象数组中获取特定属性,javascript,vue.js,ecmascript-6,Javascript,Vue.js,Ecmascript 6,我有如下结构的JavaScript对象数组: let users = [{ "id": 9, "name": "Sulaymon", "family": "Yahyaei", "email": "sulaymonhg@etlgr.com", "tel": "(91) 247-52-15", "isActive": 0, "level": "User", "email_verified_at": null, "create
let users = [{
"id": 9,
"name": "Sulaymon",
"family": "Yahyaei",
"email": "sulaymonhg@etlgr.com",
"tel": "(91) 247-52-15",
"isActive": 0,
"level": "User",
"email_verified_at": null,
"created_at": "2019-10-30 04:56:18",
"updated_at": "2019-10-30 04:56:18"
}, {
"id": 8,
"name": "Rasul",
"family": "Irmatov",
"email": "Rasul@etlgr.com",
"tel": "(91) 524-57-96",
"isActive": 0,
"level": "User",
"email_verified_at": null,
"created_at": "2019-10-24 12:28:45",
"updated_at": "2019-10-24 12:28:45"
}]
我从我的列对象中获取对象数组:
let columns = [
{label: 'Name', name: 'name', show: true},
{label: 'Family', name: 'family', show: true},
{label: 'Email', name: 'email', show: true},
{label: 'Telephone', name: 'tel', show: true},
{label: 'Level', name: 'level', show: true},
{label: 'Date Added', name: 'created_at', show: false},
{label: 'Email Verification', name: 'email_verified_at',show: false},
{label: 'Updated At', name: 'updated_at', show: false},
{label: 'Status', name: 'isActive', show: false},
];
如果show属性应为true,则获取它
结果应该是这样的:
let userData = [{
"name": "Sulaymon",
"family": "Yahyaei",
"email": "sulaymonhg@etlgr.com",
"tel": "(91) 247-52-15",
"level": "User"
}, {
"name": "Rasul",
"family": "Irmatov",
"email": "Rasul@etlgr.com",
"tel": "(91) 524-57-96",
"level": "User"
}]
我该怎么办?
让用户=[{
“id”:9,
“姓名”:“苏莱蒙”,
“家庭”:“亚海艾”,
“电子邮件”:sulaymonhg@etlgr.com",
“电话”:(91)247-52-15,
“isActive”:0,
“级别”:“用户”,
“电子邮件地址”:空,
“创建时间”:“2019-10-30 04:56:18”,
“更新时间”:“2019-10-30 04:56:18”
}, {
“id”:8,
“名称”:“Rasul”,
“家庭”:“伊尔马托夫”,
“电子邮件”:Rasul@etlgr.com",
“电话:”(91)524-57-96“,
“isActive”:0,
“级别”:“用户”,
“电子邮件地址”:空,
“创建时间”:“2019-10-24 12:28:45”,
“更新时间:2019-10-2412:28:45”
}]
让列=[
{label:'Name',Name:'Name',show:true},
{标签:'Family',名称:'Family',show:true},
{标签:'Email',名称:'Email',show:true},
{标签:'Telephone',名称:'tel',show:true},
{label:'Level',name:'Level',show:true},
{标签:'Date Added',名称:'created_at',show:false},
{标签:'Email-Verification',名称:'Email\u-verified\u-at',show:false},
{标签:'Updated At',名称:'Updated_At',show:false},
{标签:'Status',名称:'isActive',show:false},
];
让userData=[];
users.forEach(user=>{
var obj={};
columns.forEach(col=>{
如果(col.show){
obj[col.name]=用户[col.name]
}
});
用户数据推送(obj);
});
console.log(userData)
您可以尝试使用map
和filter
获得如下结果
let users=[{“id”:9,“name”:“Sulaymon”,“family”:“Yahyaei”,“email”:sulaymonhg@etlgr.com“,”电话“:”91)247-52-15“,”isActive“:0,“级别“:”用户“,”电子邮件地址“:null“,”创建地址“:”2019-10-30 04:56:18“,”更新地址“:”2019-10-30 04:56:18“,”id“:8,“姓名“:”拉苏尔“,”家人“:”伊尔马托夫“,”电子邮件“:”Rasul@etlgr.com“,”电话“:”(91)524-57-96“,“isActive”:0,“级别”:“用户”,“电子邮件验证地址”:null,“创建地址”:“2019-10-24 12:28:45”,“更新地址”:“2019-10-24 12:28:45”}]
,columnsToShow=[{label:'Name',Name:'Name',show:true},{label:'Family',Name:'true},{label:'Email',Name:'Email',show:true},{label:'tel',show:true},{label:'Level',show:true},{label:'Date Added',Name:'created_at',show:false},{label:'Email-Verification',name:'Email-verified-at',show:false},{label:'Updated-at',name:'Updated-at',show:false},{label:'Status',name:'isActive',show:false},
].filter(d=>d.show).map(d=>d.name)
让result=users.map(d=>Object.assign(…columnsToShow.map(c=>({[c]:d[c]})))
console.log(结果)
让用户=[{
“id”:9,
“姓名”:“苏莱蒙”,
“家庭”:“亚海艾”,
“电子邮件”:sulaymonhg@etlgr.com",
“电话”:(91)247-52-15,
“isActive”:0,
“级别”:“用户”,
“电子邮件地址”:空,
“创建时间”:“2019-10-30 04:56:18”,
“更新时间”:“2019-10-30 04:56:18”
},
{
“id”:8,
“名称”:“Rasul”,
“家庭”:“伊尔马托夫”,
“电子邮件”:Rasul@etlgr.com",
“电话:”(91)524-57-96“,
“isActive”:0,
“级别”:“用户”,
“电子邮件地址”:空,
“创建时间”:“2019-10-24 12:28:45”,
“更新时间:2019-10-2412:28:45”
}];
让列=[
{label:'Name',Name:'Name',show:true},
{标签:'Family',名称:'Family',show:true},
{标签:'Email',名称:'Email',show:true},
{标签:'Telephone',名称:'tel',show:true},
{label:'Level',name:'Level',show:true},
{标签:'Date Added',名称:'created_at',show:false},
{标签:'Email-Verification',名称:'Email\u-verified\u-at',show:false},
{标签:'Updated At',名称:'Updated_At',show:false},
{标签:'Status',名称:'isActive',show:false},
];
users.map((用户)=>{
返回columns.filter(column=>column.show).reduce((acc,column)=>{
acc[column.name]=用户[column.name];
返回acc;
}, {});
})
我希望这是你发布的虚构数据。@sulaymon ilhom,如果这能解决你的问题,请告诉我