JavaScript:at()方法遇到的问题并解决

news2024/10/23 22:32:24

目录

第一章 前言

第二章 使用at方法

第三章 分析原因并解决问题


第一章 前言

最近上线了一个项目,测试过程中并没有什么问题,但是上线后使用的用户多了,结果出现了这么一个问题:.at方法对低版本手机的浏览器不兼容问题;说实话,小编都没想到是这个方法的问题,因为是沿用的公共方法,但是问题出现了,还好同事也有一个低版本的苹果手机,从而让小编没有花费特别长时间解决这个bug。下面小编详细说明一下这个方法的使用以及如何兼容低版本。

代码:

const prefix = url.split('/').at(-2)
const fileName = url.split('/').at(-1)

低版本手机报错:

Uncaught TypeError: url.split('/').at is not a function

第二章 使用at方法

  • 针对于最原始数组时,我们通常通过数组下标获取获取数据的,例如——
unUseAt() {
      const arr = ['❆LO', 'LO', 'VE', 'LOVE', 'VE❆']
      console.log(arr[0], arr[arr.length - 1])
},

注意:这里下标值通常是指大于等于0的正整数,而在我们从数组后面访问的时候一般是使用length - 1的方式。其实不是不可以用,只是或多或少代码长度在这,也许会有一点点不方便。

  • 随着at()方法引入,数组获取数据的方式又变多了,可以通过at获取数组的值,索引值也可以是负数了(当下标是负数的时候从后面开始依次访问),例如——
useAt() {
      const arr = ['❆LO', 'LO', 'VE', 'LOVE', 'VE❆']
      console.log(arr.at(1), arr.at(-1))
},

注意: 由于at()方法是后续引入的新方法,那毕竟也会又版本兼容的问题,接下来小编在开发的项目中说明 

JavaScript at() 方法 | 菜鸟教程 

第三章 分析原因并解决问题

报错:Uncaught TypeError: url.split('/').at is not a function

经过了解后发现问题:是因为用户的手机浏览器的版本比较低,不支持该方法,所以才会出现该错误(要不是正巧有个同事的手机版本也低可以连本地项目调试,还真挺难发现),其实我们现在的手机浏览器都是没有问题的(这也是测试的时候没测出问题的原因),当然我也不能强制用户再买个手机;后面是解决方法

  • 回归最原始的方法——(这种方法不唯一,能实现即可)
export const getAssetsFile = (url = '@/assets/images/witsz/ceshi.png') => {
    const urlArr = String(url).split('/') // 分割成输出
    const prefix = urlArr.slice(-2)[0] // 获取原数组的最后两个值后拿到第一个值
    const fileName = urlArr.slice(-1)[0] // 获取原数组的最后一个值后拿到第一个值
    return new URL(`../assets/images/${prefix}/${fileName}`, import.meta.url).href
}
  • 小编找遍官方文档并没有找到官网给出at()兼容低版本的方法;如果大家找到可以在评论区留下 
  • 最后小编还有个思路就是自己写一个at方法从而实现兼容的问题,同时我们也能继续沿用at方法了。(但是小编这个方法是封装在工具里的,用到的地方就只有一个地方,就没花时间写了)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1843093.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++的动态内存分配

使用new/delete操作符在堆中分配/释放内存//使用new操作符在堆中分配内存int* p1 = new int;*p1 = 2234;qDebug() << "数字是:" << *p1;//使用delete操作符在堆中释放内存delete p1;在分配内存的同时初始化//在分配内存的时初始化int* p2 = new int(100…

windows和linux下清空Redis

前言 在本文中&#xff0c;我们将详尽阐述在Windows与Linux操作系统中有效清除Redis缓存的实践方法&#xff0c;旨在为您提供清晰、高效的指导流程&#xff0c;确保数据管理的灵活性与效率。 windows下推荐两款可视化工具 Another Redis Desktop Manager 这是我用的最多也是最…

【iOS】#include、#import、@class、@import

文章目录 #include#importclassimport总结 #include #include是c\c中的预处理器指令&#xff0c;用于包含头文件的内容 但是使用#include可能会出现重复包含文件的问题&#xff0c;因此需要使用&#xff08;#ifndef/#define/#endif&#xff09;。 #import //导入系统头文件…

Linux-目录和文件

目录 一、Linux目录 1、Linux常见目录 2、常见的Linux文件类型 二、cat-查看文件命令 1、cat命令用法 三、分页查看文件内容 1、 more命令 ​2、less命令 ​3、more和less的区别 四、查看文件开头或末尾 1、head命令 2、tail命令 3、wc-统计文件内容 4、grep 命令…

NLP基础概念

NLP任务不同于CV任务&#xff0c;它存在更多难点&#xff0c;例如&#xff1a; 数据表示&#xff1a;NLP任务处理的是文本数据&#xff0c;需要将自然语言文本转化为计算机可处理的形式&#xff0c;即如何把字符串变为数值数据&#xff0c;常用的有词嵌入&#xff08;Word Embe…

20240621 每日AI必读资讯

&#x1f916;GPT-4 通过图灵测试&#xff01;&#xff01; 研究人员称人们在图灵测试中无法区分 GPT-4 和人类&#xff0c;圣地亚哥加州大学认知科学系的研究人员针对GPT 4复刻了图灵测试。 研究人员招募了500名参与者&#xff0c;与四个代理人&#xff1a;人类、1960年代的…

英伟达和IBM搞事情!主攻“量子计算+AI”

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨娴睿/慕一 排版丨沛贤 深度好文&#xff1a;2000字丨8分钟阅读 Ismael Faro是一位计算机工程师&#xff0c;自2015年以来&#xff0c;他就成为开发IBM量子软件生态系统的重要人物。从2016…

Debugger的使用

断点调试 1.打断点 2.以debug模式运行 3.流程控制

一款Wordpress网站导航主题,带昼夜切换功能

Wordpress网站导航主题&#xff0c;带昼夜切换功能。 基于wordpress&#xff0c;部署和使用都比较方便。 界面比较简洁大方。后台管理功能也比较全面&#xff0c;值得一试。 这款主题界面、功能都非常简洁。 作者把这款定位为简约导航主题&#xff0c;所以这款wordpress导航…

61.WEB渗透测试-信息收集- WAF、框架组件识别(1)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;60.WEB渗透测试-信息收集- 端口、目录扫描、源码泄露&#xff08;8&#xff09; WAF的识…

西米支付:【风控升级】同一商户集中交易,将会限制正常用卡

支付公司风控策略再升级&#xff01;近日&#xff0c;有某支付公司代理透漏&#xff0c;客户反馈机器突然不能刷卡了&#xff0c;换卡也无法交易&#xff0c;交易均提示06-超出商户限额&#xff0c;然而该款机器刷卡限额为单日30万&#xff0c;单月300万&#xff0c;客户并未触…

使用MyBatisPlus进行字段的自动填充

使用MyBatisPlus进行字段的自动填充 需求场景 当我们往数据库里面插入一条数据&#xff0c;或者是更新一条数据时&#xff0c;一般都需要标记创建时间create_time和更新时间update_time的值&#xff0c;但是如果我们每张表的每个请求&#xff0c;在执行sql语句的时候我们都手…

arco design表单label和输入框的空间分布

表单空间分布 arco利用的栅格系统来实现label、input的大小分布 <a-form :model"formData.form" :label-col-props"{ span: 6 }" :wrapper-col-props"{ span: 18 }" >// 其它...... </a-form>栅格系统中&#xff0c;默认空间总量2…

web 腾讯地图怎么设置卫星底图??

引用腾讯地图JavaScript SDK (腾讯地图引用文档) 设置卫星底图代码如下&#xff1a;官网示例 new TMap.Map("container", {// zoom: 16, //设置地图缩放级别zoom: 17.2, //设置地图缩放级别center: new TMap.LatLng(lat, long), //设置地图中心点坐标pitch: 35, //…

OZON彩妆热销产品,OZON热销化妆品

在当今的电商时代&#xff0c;OZON平台以其卓越的服务和丰富的产品种类&#xff0c;成为了众多消费者和美妆爱好者的首选。特别是在彩妆领域&#xff0c;OZON平台上的热销产品不仅满足了消费者的多样化需求&#xff0c;更引领了美妆新潮流。本文将为您详细解读OZON彩妆热销产品…

Matlab个性化绘图第3期—带三维球标记的折线图

前段时间有会员在群里问该如何绘制下面这种带三维球标记的折线图&#xff1a; 本期内容就来分享一下带三维球标记的折线图的Matlab绘制思路。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;加群的朋友请自行下载。有需…

Arduino平台软硬件原理及使用——无源蜂鸣器模块的使用

文章目录 一、蜂鸣器发声原理 二、无源蜂鸣器与有源蜂鸣器的区分 三、无源蜂鸣器模块在Arduino中的使用 一、蜂鸣器发声原理 上图为常见的不同封装及规格的蜂鸣器。 同蜜蜂、知了等昆虫发声原理一样&#xff0c;蜂鸣器同样靠振动来发出声音&#xff1b; 如上图为无源蜂鸣器的内…

【比较版本号】

比较版本号 一、题目二、方法一&#xff1a;s.split()parseInt()三、方法二&#xff1a;优化空间复杂度——双指针四、补充&#xff1a;charCodeAt()函数 一、题目 二、方法一&#xff1a;s.split()parseInt() 使用split将版本号的字符串拆分为数组&#xff0c;再将数组中的每一…

c#考试知识点

第一题 //数组{1&#xff0c;2&#xff0c;3&#xff0c;&#xff0c;8&#xff0c;6} //方法&#xff08;数组&#xff0c;目标值&#xff09; //输出 //接收一个数组&#xff0c;输出目标值是数组中哪两个数的和&#xff0c;并输出下标 using System; using System.Collectio…

从零开始学代码写了一个心理学知识导航站

我从零编码经验开始开发一个网站。最初我只是想把自己收集到的心理学知识和一些资源分享出来&#xff0c;希望能够让更多的用户受益。 然而&#xff0c;在写作时&#xff0c;我意识到&#xff0c;尽管函数和界面是使用 GPT 从头开始​​手工编写的&#xff0c;而且我没有使用所…