如何用原生JavaScript移除数组中的数字项,仅保留字符串类型结果
代码调整方案
你当前拿到的结果包含数字,核心原因是链接列表中本身存在https://api/v1/3这类仅到数字层级的链接,之前的写法直接提取所有链接的路径最后一段,就会把这类链接的数字段也一同输出。你可以按以下两种方案调整:
方案1:提取后过滤纯数字项
这种写法改动最小,直接在现有逻辑后加过滤规则,排除纯数字的结果即可:
const result = obj.links .map((o) => o.href.split("/").pop()) // 过滤所有仅由数字组成的项 .filter(item => !/^\d+$/.test(item));
方案2:按路径层级精准提取(更稳妥)
如果你担心后续路径中可能出现合法的数字命名参数被误删,可以先解析路径层级,只提取数字段之后存在内容的链接的最后一段:
const result = obj.links.map(o => { // 先解析URL获取标准路径,分割为非空的路径段数组 const pathSegments = new URL(o.href).pathname.split('/').filter(Boolean); // 路径段格式固定为 [v版本号, 数字位, 资源名],长度大于2才说明有资源名 return pathSegments.length > 2 ? pathSegments.at(-1) : null; // 过滤掉空值(也就是仅到数字位的链接对应的返回值) }).filter(Boolean);
两种方案最终输出的结果都是['user', 'customer', 'suppliers'],符合预期。
内容的提问来源于stack exchange,提问作者yajoj98337
相关产品推荐
相关产品推荐

