Angular 13中如何依据对象键匹配过滤对象数组,保留匹配元素
在Angular 13中根据对象键过滤数组元素
要实现将array1中param属性与obj的键匹配的元素保留、过滤不匹配元素的需求,你可以结合Object.keys()和数组的filter()方法完成,具体实现如下:
实现代码
// 定义原始数组与对象 array1 = [ {displayName: 'Chase Id', param: 'chaseId', icon: 'fa fa-sort'}, {displayName: 'Last Modified By', param: 'lastModifiedBy', icon: 'fa fa-sort'}, {displayName: 'Last Modified Date', param: 'lastModifiedDate', icon: 'fa fa-sort'}, {displayName: 'Imported Chase Id', param: 'importedChaseId', icon: 'fa fa-sort'}, {displayName: 'Chase Status Name', param: 'chaseStatusName', icon: 'fa fa-sort'}, {displayName: 'Pend Reason', param: 'pendReason', icon: 'fa fa-sort'}, {displayName: 'Active', param: 'active', icon: 'fa fa-sort'}, {displayName: 'Last Contacted Date', param: 'lastContactedDate', icon: 'fa fa-sort'}, {displayName: 'Ready To Review Date', param: 'readyToReviewDate', icon: 'fa fa-sort'}, {displayName: 'Scheduled Date', param: 'scheduledDate', icon: 'fa fa-sort'}, {displayName: 'Release Pend To Client', param: 'releasePendToClient', icon: 'fa fa-sort'} ]; obj = { chaseId: 419, chaseStatusName: "Scheduled", id: 42, importedChaseId: "123478", lastModifiedBy: "adminuser", lastModifiedDate: "2022-08-12T12:43:17.792023", pendReason: null, type: "CHASE_STATUS" }; // 过滤逻辑方法 getFilteredArray() { // 提取obj的所有键组成数组 const objKeys = Object.keys(this.obj); // 过滤array1,保留param匹配obj键的元素 return this.array1.filter(item => objKeys.includes(item.param)); }
代码说明
Object.keys(this.obj):提取obj的所有键,返回一个字符串数组(如['chaseId', 'chaseStatusName', 'id', ...])array1.filter(...):遍历array1的每个元素,检查元素的param属性是否存在于objKeys数组中,符合条件的元素会被保留。
最终过滤结果
保留的元素为:
- Chase Id (param: chaseId)
- Last Modified By (param: lastModifiedBy)
- Last Modified Date (param: lastModifiedDate)
- Imported Chase Id (param: importedChaseId)
- Chase Status Name (param: chaseStatusName)
- Pend Reason (param: pendReason)
其余元素(如Active、Last Contacted Date等)因param未在obj的键中出现,会被过滤掉。
内容的提问来源于stack exchange,提问作者Bhrungarajni
相关产品推荐
相关产品推荐

