栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript中的endsWith

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript中的endsWith

该答案最初发布于2010年(六年前),因此请注意以下有见地的评论:

  • Shauna -Google员工的更新-看起来ECMA6添加了此功能。MDN文章还显示了polyfill。

  • TJ Crowder-在现代浏览器中创建子字符串并不昂贵。这个答案很可能是在2010年发布的。

    this.substr(-suffix.length) === suffix
    如今,简单的方法在Chrome上最快,在IE11上与indexOf相同,并且在Firefox上仅慢4%(fergetaboutit领域):当结果为假时,整体速度更快:jsperf.com/endswith-stackoverflow-when-false 当然,随着ES6添加endsWith,这一点是没有意义的。 :-)


原始答案:

我知道这是一个古老的问题…但是我也需要这个,并且我需要它来跨浏览器工作,所以… 结合每个人的答案和评论 并简化一下:

String.prototype.endsWith = function(suffix) {    return this.indexOf(suffix, this.length - suffix.length) !== -1;};
  • 不创建子字符串
  • 使用本机
    indexOf
    功能以获得最快的结果
  • 使用第二个参数跳过不必要的比较
    indexOf
    以向前跳过
  • 在Internet Explorer中工作
  • 没有正则表达式并发症

另外,如果您不喜欢在本机数据结构的原型中填充东西,这是一个独立版本:

function endsWith(str, suffix) {    return str.indexOf(suffix, str.length - suffix.length) !== -1;}

编辑: 正如@hamish在评论中指出的那样,如果您想在安全方面犯错,并检查是否已经提供了实现,则可以

typeof
像这样添加检查:

if (typeof String.prototype.endsWith !== 'function') {    String.prototype.endsWith = function(suffix) {        return this.indexOf(suffix, this.length - suffix.length) !== -1;    };}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517746.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号