JavaScript对象数组提取公司列表及条件筛选实现方法
JavaScript对象数组公司提取与筛选实现
以下实现默认将给出的示例数组存储在常量sourceData中,可直接替换为实际业务数据使用。
1. 提取全量公司列表
通过数组map方法遍历所有记录,直接抽取每条记录fieldData下的Company字段即可,代码如下:
// 存储数据源的常量,可替换为实际业务数据 const sourceData = [/* 对应给出的示例对象数组 */]; // 提取全量公司名列表 const allCompanyList = sourceData.map(item => item.fieldData.Company);
基于示例数据运行后得到的全量公司列表为:
- Bohnen, Thomas P Esq
- Monroeville Area Chmbr Commrce
- Parks Arizona State
- Shick And Wesley
- Micro Enterprises
2. 多规则筛选实现
2.1 筛选归属指定城市的公司
通过数组filter方法匹配记录的城市字段,支持按需返回公司名列表或者完整原始记录,代码如下:
/** * 按所属城市筛选公司 * @param {string} targetCity 要匹配的目标城市名称 * @param {boolean} [needFullRecord=false] 是否返回完整原始记录,默认仅返回匹配的公司名 * @returns {Array} 筛选结果 */ function getCompanyByCity(targetCity, needFullRecord = false) { const matchList = sourceData.filter(record => record.fieldData.City === targetCity); return needFullRecord ? matchList : matchList.map(record => record.fieldData.Company); } // 调用示例:筛选归属Nashville的公司 // console.log(getCompanyByCity('Nashville')) // 输出: ["Bohnen, Thomas P Esq"]
2.2 筛选公司名称以"N"开头的公司
通过字符串startsWith方法判断公司名字段的首字符,支持配置是否区分大小写、是否返回完整记录,代码如下:
/** * 筛选名称以N开头的公司 * @param {boolean} [caseSensitive=true] 是否区分大小写,默认严格匹配大写N开头 * @param {boolean} [needFullRecord=false] 是否返回完整原始记录,默认仅返回匹配的公司名 * @returns {Array} 筛选结果 */ function getCompanyStartWithN(caseSensitive = true, needFullRecord = false) { const matchList = sourceData.filter(record => { const companyName = record.fieldData.Company?.trim(); if (!companyName) return false; return caseSensitive ? companyName.startsWith('N') : companyName.toUpperCase().startsWith('N'); }); return needFullRecord ? matchList : matchList.map(record => record.fieldData.Company); } // 调用示例 // console.log(getCompanyStartWithN()) // 基于当前示例数据返回空数组,现有样例无N开头的公司名
说明:如果需要同时叠加多个筛选规则,只需要在
filter的判断函数中追加对应的判断条件即可。
内容的提问来源于stack exchange,提问作者Philippe Auguste Louis
相关产品推荐
相关产品推荐

