簡體   English   中英

從對象數組中,獲取特定屬性

[英]From an array of objects, get specific properties

我有具有以下結構的 JavaScript object 數組:

  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"
}]

我從我的 object 列中獲取對象數組:

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"
}]

我該怎么辦???

 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}, ]; let userData = []; users.forEach(user => { var obj = {}; columns.forEach(col => { if (col.show) { obj[col.name] = user[col.name] } }); userData.push(obj); }); console.log(userData);

您可以嘗試使用mapfilter來實現如下結果

 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"}], columnsToShow = [{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}, ].filter(d => d.show).map(d => d.name) let result = users.map(d => Object.assign(...columnsToShow.map(c => ({ [c]: d[c] })))) console.log(result)

 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}, ]; users.map((user) => { return columns.filter(column => column.show).reduce((acc, column) => { acc[column.name] = user[column.name]; return acc; }, {}); })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM