JavaScript中获取数组内以指定字符串开头元素的高效方法
针对JS数组筛选指定前缀元素的实现优化
有更语义化的内置方法可以使用,和你现有方案性能相当,可读性更强:
- ES6(ES2015)新增了内置方法
String.prototype.startsWith(),专门用于判断字符串是否以指定子串作为前缀,直接返回布尔值,完全匹配你的使用场景。
优化后的代码示例:
const originArr = ["oauth2.Hubspot1", "oauth1.Hubspot", "oauth2.Hubspot", "oauth2.HubSpot", "something else"]; const result = originArr.filter(key => key.startsWith("oauth2.")); console.log(result); // 输出结果和原方案一致:["oauth2.Hubspot1","oauth2.Hubspot","oauth2.HubSpot"]
补充说明:
- 性能层面:
startsWith和你当前使用的indexOf方案时间复杂度完全一致,数组遍历整体为O(n),单条字符串匹配复杂度为O(k)(k为前缀长度,此处固定为6位),常规业务场景下无明显性能差异,优先选择语义更清晰的startsWith即可。 - 兼容性层面:如果需要兼容IE11及更早的老旧浏览器,可以保留原有
indexOf == 0的写法,也可以给startsWith引入polyfill做兼容处理。
内容的提问来源于stack exchange,提问作者Code Guy
相关产品推荐
相关产品推荐

