位置: IT常识 - 正文

【JavaScript】五个常用功能/案例:判断特定结尾字符串 | 获取指定字符串 | 颜色字符串转换 | 字符串转驼峰格式 | 简易购物车(javascripts)

编辑:rootadmin
【JavaScript】五个常用功能/案例:判断特定结尾字符串 | 获取指定字符串 | 颜色字符串转换 | 字符串转驼峰格式 | 简易购物车

推荐整理分享【JavaScript】五个常用功能/案例:判断特定结尾字符串 | 获取指定字符串 | 颜色字符串转换 | 字符串转驼峰格式 | 简易购物车(javascripts),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascriptz,javascript !!,javascript gui,javascript!,javascriptz,javascript!,javascriptj,javascript gui,内容如对您有帮助,希望把文章链接给更多的朋友!

CSDN话题挑战赛第2期 参赛话题:学习笔记

🖥️ NodeJS专栏:Node.js从入门到精通 🖥️ 博主的前端之路:前端之行,任重道远(来自大三学长的万字自述) 🖥️ TypeScript知识总结:TypeScript从入门到精通(十万字超详细知识点总结) 🧑‍💼个人简介:大三学生,一个不甘平庸的平凡人🍬 👉 你的一键三连是我更新的最大动力❤️! 🏆分享博主自用牛客网🏆:一个非常全面的面试刷题求职网站,点击跳转🍬

文章目录前言一、判断特定结尾的字符串二、获取指定字符串三、颜色字符串格式转换四、将字符串转换为驼峰格式五、实现简易购物车结语前言

最近博主一直在牛客网刷题巩固基础知识,牛客网不仅具有公司真题、专项练习、面试题库、在线编程等功能,还具有非常强大的AI模拟面试功能,简直是求职者的福音!

牛客网里的题库非常全面的,无论你是前端还是后端,是想要备考还是准备面试又或者是想要提高自己,你都能在牛客网上找到适合自己的题,赶快点击链接去注册登录吧:点我进入牛客网

牛客网牛客网

本篇文章所有示例来自于牛客网题库/在线编程/JS篇,这些都是前端开发中常用的功能,借此记录一下刷题过程,巩固基础!

一、判断特定结尾的字符串

描述:

给定字符串 str,检查其是否以元音字母结尾 1、元音字母包括 a,e,i,o,u,以及对应的大写 2、包含返回 true,否则返回 false

示例:

输入:'gorilla'输出:true

方案一: 运用数组进行判断

function endsWithVowel(str) { const arr=['a','e','i','o','u'] return arr.includes(str[str.length-1].toLowerCase())}

知识点:

includes()方法用来判断一个数组是否包含一个指定的值。toLowerCase() 会将调用该方法的字符串值转换为小写形式,并返回。

方案二: 使用正则

function endsWithVowel(str) { const reg=/[aeiou]$/gi return reg.test(str)}

知识点:

[aeiou]表示匹配一个字符,它可以是“a”、“e”、“i”、“o”、“u”之一。正则表达式后面的g,i是正则的一个修饰符,g表示全局匹配,i表示不区分大小写。$(美元符号)匹配结尾,在多行匹配中匹配行结尾。test() 方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配。返回 true 或 false。二、获取指定字符串

描述:

给定字符串 str,检查其是否包含 连续3个数字,请使用正则表达式实现。 1、如果包含,返回最先出现的 3 个数字的字符串 2、如果不包含,返回 false

示例:

输入:'9876543'输出:'987'

方案:

function captureThreeNumbers(str) { const reg=/\d{3}/g if(reg.test(str)){ return str.match(reg)[0] } return false}

知识点:

\d就是[0-9],表示是一位数字。{m} 等价于{m,m},表示出现m到m次,即m次。({m,n},表示出现m到n次。)正则表达式后面的g是正则的一个修饰符,表示全局匹配。test() 方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配。返回 true 或 false。match()方法检索返回一个字符串匹配正则表达式的结果。(数组形式)三、颜色字符串格式转换

描述:

将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff

rgb 中每个 , 后面的空格数量不固定十六进制表达式使用六位小写字母如果输入不符合 rgb 格式,返回原始输入

示例:

输入:'rgb(255, 255, 255)'输出:#ffffff

方案一:

function rgb2hex(sRGB) { const reg = /^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/; const ret = sRGB.match(reg); if (!ret) { return sRGB; } else { var str = "#"; for (var i = 1; i <= 3; i++) { var m = parseInt(ret[i]); if (m >= 0 && m <= 255) { str += m < 16 ? "0" + m.toString(16) : m.toString(16); } else { return sRGB; } } return str; }}

知识点:

正则里

表示开头;\代表转义(如不能直接输入(,需要输入\(对(进行转义);\d就是[0-9],表示是一位数字;+ 等价于{1,},表示出现至少一次;\s是[ \t\v\n\r\f],表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车符、换页符;* 等价于{0,},表示出现任意次,有可能不出现。$代表结尾

parseInt(string,radix) 解析一个字符串并返回指定基数(radix)的十进制整数,radix是2-36之间的整数,假如radix指定 0 或未指定,基数将会根据字符串的值进行推算。

【JavaScript】五个常用功能/案例:判断特定结尾字符串 | 获取指定字符串 | 颜色字符串转换 | 字符串转驼峰格式 | 简易购物车(javascripts)

rgb(a, b, c) 中的a、b、c都在0~255之间。

match() 方法检索返回一个字符串匹配正则表达式的结果(数组形式),如果正则表达式没有设置全局标志 (g),数组的0元素包含整个匹配,而第 1 到 n 元素包含了匹配中曾出现过的任一个子匹配。这相当于没有设置全局标志的 exec 方法。如果设置了全局标志(g),元素0到n中包含所有匹配。

var regexp = /rgb\((\d+),\s*(\d+),\s*(\d+)\)/g; // 加g全局匹配var ret = "rgb(255, 250, 255)".match(regexp);console.log("全局匹配结果:", ret); // 全局匹配结果: [ 'rgb(255, 250, 255)' ]var regexp = /rgb\((\d+),\s*(\d+),\s*(\d+)\)/; // 不加gvar ret = "rgb(255, 250, 255)".match(regexp);console.log("匹配结果:", ret);// 匹配结果: [// 'rgb(255, 250, 255)',// '255',// '250',// '255',// index: 0,// input: 'rgb(255, 250, 255)',// groups: undefined// ]

思路:

先使用正则判断输入的内容是否符合rgb格式,是的话就for循环遍历到rgb中的三个数值字符串,通过parseInt将其转换成数值,再进一步判断其是否在0~255之间,是的话就继续操作,通过toString(16)转换成16进制字符串(需要注意的是,如果原数小于16,转换成16进制后就只有一位,这时就需要在它前面补0,因为案例要求的是十六进制表达式使用六位小写字母,每两位表示一个rgb中的一个数值)

方案二: 优雅永不过时!

function rgb2hex(sRGB) { try { return eval(sRGB); } catch (err) { // 出现错误了就直接返回sRGB return sRGB; }}// 定义一个rgb方法(因为sRGB字符串是rgb(a,b,c)格式的,当作JS代码执行时相当于是调用rgb函数)function rgb(r, g, b) { // 有一个数值不在0~255范围内就抛出错误 if (!num(r) || !num(g) || !num(b)) { throw Error; } let rH = r.toString(16); let gH = g.toString(16); let bH = b.toString(16); // 是一位时在前面补零补成两位 rH = rH.length == 1 ? "0" + rH : rH; gH = gH.length == 1 ? "0" + gH : gH; bH = bH.length == 1 ? "0" + bH : bH; return "#" + rH + gH + bH;}// 判断数值范围是否在0~255之间function num(num) { return parseInt(num) >= 0 && parseInt(num) <= 255;}

知识点:

eval() 函数会将传入的字符串当做 JavaScript 代码进行执行。

这种方法比较巧妙,也比较简单直观。

四、将字符串转换为驼峰格式

描述:

css 中经常有类似 background-image 这种通过 - 连接的字符,通过 javascript 设置样式的时候需要将这种样式转换成 backgroundImage 驼峰格式,请完成此转换功能

以 - 为分隔符,将第二个起的非空单词首字母转为大写-webkit-border-image 转换后的结果为 webkitBorderImage

示例:

输入:'font-size'输出:fontSize

方案:

function cssStyle2DomStyle(sName) { let str = ""; // 通过-分割字符串,获得分割后的数组 const arr = sName.split("-"); // 如果数组第一位为空,则将其删除 if (arr[0] === "") { arr.shift(); } for (let i = 0; i < arr.length; i++) { if (i === 0) { str += arr[i]; } else { str += arr[i][0].toUpperCase() + arr[i].slice(1); } } return str;}

知识点:

split() 方法使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。

const arr = "a-b-c".split("-");console.log(arr); // [ 'a', 'b', 'c' ]

shift() 方法会删除数组的第一个元素并返回删除的这个元素,该方法会改变原数组。

toUpperCase() 方法将字符串转换成大写形式并返回。

slice(a,b) 方法截取字符串,从下标a截取到下标b(包括下标为a的元素不包括下标b的元素),如果不指定a代表从索引 0 开始,不指定b则代表截取到最后(包含最后一个元素)。a为负值时则表示从原数组中的倒数第几个元素开始提取。

五、实现简易购物车

描述:

HTML模块为一个简化版的购物车,tbody为商品列表,tfoot为统计信息,系统会随机在列表中生成一些初始商品信息 1、请完成add函数,在列表后面显示items商品信息。参数items为{name: String, price: Number}组成的数组 2、请完成bind函数,点击每一行的删除按钮(包括通过add增加的行),从列表中删除对应行 3、请注意同步更新统计信息,价格保留小数点后两位 4、列表和统计信息格式请与HTML示例保持一致 5、不要直接手动修改HTML中的代码 6、不要使用第三方库

方案:

HTML:

<table id="jsTrolley"> <thead><tr><th>名称</th><th>价格</th><th>操作</th></tr></thead> <tbody> <tr><td>产品1</td><td>10.00</td><td><a href="javascript:void(0);">删除</a></td></tr> <tr><td>产品2</td><td>30.20</td><td><a href="javascript:void(0);">删除</a></td></tr> <tr><td>产品3</td><td>20.50</td><td><a href="javascript:void(0);">删除</a></td></tr> </tbody> <tfoot><tr><th>总计</th><td colspan="2">60.70(3件商品)</td></tr></tfoot></table><!-- 测试 --><button onclick="add([{name: 'Ailjx', price: 3}])">增加</button>

CSS:

body,html { padding: 0; margin: 0; font-size: 14px; color: #000000;}table { border-collapse: collapse; width: 100%; table-layout: fixed;}thead { background: #3d444c; color: #ffffff;}td,th { border: 1px solid #e1e1e1; padding: 0; height: 30px; line-height: 30px; text-align: center;}

JavaScript:

function add(items) { let tbody = document.getElementsByTagName('tbody')[0]; items.forEach((item) => { // 创建tr节点 let tr = document.createElement('tr'); tr.innerHTML = `<td>${item.name}</td><td>${item.price.toFixed(2)}</td><td><a href="javascript:void(0);">删除</a></td>`; // 将创建的tr添加到tbody中 tbody.appendChild(tr); }) // 调用更改统计价格和数量的函数 changePrice();}function bind() { let tbody = document.getElementsByTagName('tbody')[0]; // 给tbody添加点击事件 tbody.onclick = function (e) { let target = e.target // 如果点击的是删除按钮 if (target.innerText == "删除") { // Element.remove() 方法,把对象从它所属的 DOM 树中删除。 target.parentNode.parentNode.remove(); // 调用更改统计价格和数量的函数 changePrice(); } }}// 更改统计价格和数量的函数function changePrice() { let tbody = document.getElementsByTagName('tbody')[0]; let tftext = document.getElementsByTagName('tfoot')[0].children[0].children[1]; let total = 0; // 统计总价 for (let i = 0; i < tbody.children.length; i++) { // parseFloat() 函数解析一个参数(必要时先转换为字符串)并返回一个浮点数。 total += parseFloat(tbody.children[i].children[1].innerText); }; // toFixed(digits) 方法使用定点表示法来格式化一个数值。参数digits表示小数点后数字的个数 // Element.childElementCount 只读属性返回一个无符号长整型数字,表示给定元素的子元素数。 tftext.innerText = `${total.toFixed(2)}(${tbody.childElementCount}件商品)`;}

效果演示:

结语

这篇文章的所有内容都出自于牛客网的JS篇题库:

牛客网的JS题库非常贴合实际的,在写的过程中自己查漏补缺,收获了很多,强烈将牛客网推荐给大家!

如果本篇文章对你有所帮助,还请客官一件四连!❤️

基础不牢,地动山摇! 快来和博主一起来牛客网刷题巩固基础知识吧!

本文链接地址:https://www.jiuchutong.com/zhishi/298951.html 转载请保留说明!

上一篇:轻松玩转开源大语言模型bloom(一)(开源dap)

下一篇:UNet - unet网络(program status)

  • 华为荣耀60(华为荣耀6怎么样)(华为荣耀60华为60微信聊天记录不久自己删除)

    华为荣耀60(华为荣耀6怎么样)(华为荣耀60华为60微信聊天记录不久自己删除)

  • 知道抖音号怎么搜索用户(知道抖音号怎么查到这个人)

    知道抖音号怎么搜索用户(知道抖音号怎么查到这个人)

  • QCY蓝牙耳机怎么双耳模式(qcy蓝牙耳机怎么开机)

    QCY蓝牙耳机怎么双耳模式(qcy蓝牙耳机怎么开机)

  • vivox50微信视频支持美颜功能吗(vivox50微信视频美颜怎么关闭)

    vivox50微信视频支持美颜功能吗(vivox50微信视频美颜怎么关闭)

  • vivo打电话对方听不到我的声音(vivo打电话对方听不见声音什么原因)

    vivo打电话对方听不到我的声音(vivo打电话对方听不见声音什么原因)

  • iphonexr信号不稳定怎么办(iponexr信号不稳定)

    iphonexr信号不稳定怎么办(iponexr信号不稳定)

  • 快手设置里面没有实验室是怎么回事?(快手设置里面没有开通直播)

    快手设置里面没有实验室是怎么回事?(快手设置里面没有开通直播)

  • 12306待兑现是不是还没成功(12306待兑现订单能成功吗)

    12306待兑现是不是还没成功(12306待兑现订单能成功吗)

  • 小米拦截短信在哪里看(小米手机短信拦截)

    小米拦截短信在哪里看(小米手机短信拦截)

  • 手机耳机孔进水了怎么办(手机耳机孔进水了显示耳机模式)

    手机耳机孔进水了怎么办(手机耳机孔进水了显示耳机模式)

  • 另一摄像头已损坏无法切换怎么办(另一摄像头已损坏是什么意思)

    另一摄像头已损坏无法切换怎么办(另一摄像头已损坏是什么意思)

  • amd2200g相当于i几(2200g amd)

    amd2200g相当于i几(2200g amd)

  • 华为如何强制关闭应用锁(华为如何强制关闭健康使用平板)

    华为如何强制关闭应用锁(华为如何强制关闭健康使用平板)

  • 魅蓝手机怎么开启开发者选项(魅蓝手机怎么开热点)

    魅蓝手机怎么开启开发者选项(魅蓝手机怎么开热点)

  • 怎样查看行车记录仪里的视频(怎样查看行车记录仪的录音)

    怎样查看行车记录仪里的视频(怎样查看行车记录仪的录音)

  • vivo手机开机界面循环(vivo手机开机界面循环无法进入)

    vivo手机开机界面循环(vivo手机开机界面循环无法进入)

  • 华为耳机麦克风在哪(华为耳机麦克风坏了怎么修)

    华为耳机麦克风在哪(华为耳机麦克风坏了怎么修)

  • 苹果ipod是什么东西(ipod是啥意思啊?)

    苹果ipod是什么东西(ipod是啥意思啊?)

  • iphone8p运行内存多大(iphone8p运行内存无故占满)

    iphone8p运行内存多大(iphone8p运行内存无故占满)

  • 怎么把情侣黄钻标识去掉(怎么把情侣黄钻的装扮去掉)

    怎么把情侣黄钻标识去掉(怎么把情侣黄钻的装扮去掉)

  • 华为p30pro的耳机插孔在哪里(华为p30pro的耳机模式在哪里)

    华为p30pro的耳机插孔在哪里(华为p30pro的耳机模式在哪里)

  • qq会员vip9什么时候出(qq的vip9)

    qq会员vip9什么时候出(qq的vip9)

  • 小米手机用户体验计划在哪里(小米手机用户体验计划在哪里找到)

    小米手机用户体验计划在哪里(小米手机用户体验计划在哪里找到)

  • qq怎么建立关系(qq里面怎样建立关系)

    qq怎么建立关系(qq里面怎样建立关系)

  • 快手卡点视频怎么做(快手卡点视频教程)

    快手卡点视频怎么做(快手卡点视频教程)

  • vivox27厚度多少毫米(vivo27机身厚度)

    vivox27厚度多少毫米(vivo27机身厚度)

  • 最高跑分纪录的显卡是什么

    最高跑分纪录的显卡是什么

  • 用Python来统计本机CPU利用率(python进行统计分析)

    用Python来统计本机CPU利用率(python进行统计分析)

  • 城市基础设施配套费减免
  • 资产负债表中应付职工薪酬是负数
  • 差额征税劳务费发票
  • 财政拨款收入和财政补助收入的区别
  • 视同销售销售额的确定方法
  • 事业单位退休职业年金发放多少个月
  • 账簿保管期满如何销毁
  • 金融行业打包是什么意思
  • 进口化妆品消费税率是多少
  • 支票存根联要带去银行吗
  • 快递售后是干嘛的
  • 公司缴纳个人所得税会计分录
  • 汽车的高速公路是指
  • 付款单中未全付款怎么办
  • 一般企业和行政事业单位的资产负债表是否一样
  • 建筑业预征缴纳税款
  • 专用发票过期了还能冲红发票吗
  • 主营业务收入明细账图片
  • 销售二手设备税率
  • 对方开增值税普通发票,我方需要做什么呢?
  • 主营业务收入会计英语
  • 验资报告需要什么材料
  • 1697510024
  • 企业购买固定资产要交印花税吗
  • 所得税汇算清缴补税的会计处理
  • 补交以前年度增值税的科目处理
  • 电脑维修中常用的软件
  • macOS Big Sur 11.1 开发者预览版 Beta 2推送更新
  • 应交消费税会计分录怎么做
  • 什么叫存量房转移登记
  • 纳税人购进农产品取得
  • 公司出租房屋租赁发票税率
  • php read
  • 计提公积金账务处理需要什么凭证
  • 实收资本大于注册资本是什么意思
  • 监狱劳教企业是国企吗
  • 前端静态页面
  • 在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
  • 布莱顿小镇介绍
  • framework3.5怎么打开
  • h5移动端网页设计
  • convwthn如何定义
  • laravel使用了哪些设计模式
  • 充话费如何开公司发票
  • 减按10%的税率是什么意思
  • 实缴的钱注销后可以拿回来吗
  • 货物运输服务可以加计扣除吗
  • 哪些属于政府机关单位
  • 公司的资金管理模式是什么?
  • mysql 执行过程
  • 混合销售的含义
  • 工业企业外购存货的入账价值一般包括()
  • 以前年度多计提成本怎么处理
  • 退款产生的手续费怎么算
  • 银行扣款后又退回怎么办
  • 注册资本未到位注销公司处理
  • 结转增值税的账务处理一定要通过转出未交增值税吗
  • 无形资产研究阶段发生的支出应该全部费用化
  • 实缴资本在公司能查到吗
  • 房租已支付未收到发票可以做费用吗
  • 培训费怎么算个人所得税
  • 小规模纳税人购进税控收款机
  • sql注入神器
  • fedora系统安装教程
  • xp系统如何禁止软件联网
  • 编程乱码
  • 笔记本win8为什么不能连无线
  • win7任务栏变小图标
  • 家用电脑是什么机型
  • WIN10系统怎么改成泰语
  • win7 64位旗舰版电脑鼠标如何才能设置成左手操作?设置鼠标为左手操作的方法
  • cocos2dx 3.3 quick lua 实现返回键退出程序
  • javascript还有人用吗
  • unity 开发游戏
  • python爬虫:入门+进阶
  • javascriptcsdn
  • jquery滚动事件
  • 落实落地是什么意思
  • 企业招用退役士兵
  • 退休人员还写工作单位吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设