JavaScript按产品类型过滤并提取URL ID拼接(含空值处理)
问题修正:按规则处理对象数组并生成拼接结果
需求规则明确
- 针对数组中每个包含
url和productType的对象:- 若
productType为"ESJ001":提取URL中的id;若提取出的id为undefined,返回空值 - 若
productType为"ESJ003":直接返回空值 - 最终将所有结果用逗号拼接,空值保留占位(即连续逗号)
- 若
修正后的代码实现(以JavaScript为例)
假设原对象数组结构如下:
const items = [ { url: 'https://example.com/item/001', productType: 'ESJ001' }, { url: 'https://example.com/item/005', productType: 'ESJ001' }, { url: 'https://example.com/item/xxx', productType: 'ESJ003' }, { url: 'https://example.com/no-id', productType: 'ESJ001' } ];
处理逻辑代码:
// 根据实际URL结构调整id提取逻辑,这里假设id是URL路径最后一段 const extractIdFromUrl = (url) => { const pathSegments = new URL(url).pathname.split('/'); const id = pathSegments.filter(seg => seg).pop(); // 过滤空段,取最后有效部分 return id; }; const processedResult = items.map(item => { switch (item.productType) { case 'ESJ003': return ''; case 'ESJ001': const id = extractIdFromUrl(item.url); return id !== undefined ? id : ''; default: return ''; // 其他类型默认返回空,可按需修改 } }).join(','); console.log(processedResult); // 输出:"001,005,,"
代码关键点说明
- URL id提取逻辑:使用
URLAPI解析路径,避免手动拆分字符串的兼容性问题;过滤空路径段后取最后部分作为id,可根据实际URL规则(如query参数?id=xxx)调整提取方式。 - 分支处理:通过
switch清晰区分不同productType的处理逻辑,ESJ003直接返回空字符串;ESJ001提取id后判断是否有效,无效则返回空。 - 结果拼接:
map生成对应结果数组后,用join(',')拼接,空字符串会保留逗号分隔的空位,完全匹配期望输出格式。
内容的提问来源于stack exchange,提问作者Solid_layout
相关产品推荐
相关产品推荐

