题目: 写一个函数判断字符串中x的数量和o的数量是否相等(忽略大小写): XO("ooxx") => true XO("xooxx") => false XO("ooxXm") => true XO("zpzpzpp") => true // 没有x也没有o,认为它们的长度都是0,也为相等. XO("zzoo") => false

function XO(str){let x=str.match(/x/ig);//求出x的数组let o=str.match(/o/ig);//求出o的数组if(x&&o){return x.length==o.length?true:false;}else if(!x&&!o){return true}else {return false;}
}复制代码

此题中主要用到了字符串的match方法,下面我们简单的回顾下match的用法

  • 匹配字符:
let  str="abc";
let  c=str.match("a");
console.log(c);
["a", index: 0, input: "abc"] 复制代码

c 的返回值,如果有,返回值是一个数组,第一项代表要匹配的字符"a",第二项,index 就是找到a第一次出现的位置,input代表的是整个原始的字符串.如果字符串中没有符合条件的就是返回null

  • 匹配正则:
 let str="abcAbx";let c=str.match(/a/ig);console.log(c);["a", "A"];复制代码

match匹配正则的时候,如果找到符合条件的返回的数组,如果找不到返回的就是null;

在会的基础上寻找更优的做法

  • 1 str.split 结合filter方法(filter方法中的方法体如果不加大括号就相当于return)
  function XO(str){str=str.toLowerCase().split("");return str.filter(item=>item==='x').length===str.filter(item=>item==='o').length}复制代码

*2 正则匹配

   function XO(str){return (str.match(/x/ig)||[]).length===(str.match(/o/ig)||[]).length ;}复制代码

js系列之每天一练成长录之一相关推荐

  1. 【深入浅出Node.js系列十一】Node.js开发框架Express4.x

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 深入浅出Node.js系列 [深入浅出Node.js系列一]什么是Node.js [深入浅出Node.js系列二]N ...

  2. Ember.js系列文章

    JS前端框架之Ember.js系列文章 本文为文章索引,主要是罗列Ember.js的相关文章便于阅读. 相关演示代码:github for free. 基础篇 1. EmberJs之What|Why| ...

  3. 【D3.V3.js系列教程】--(十四)有路径的文字

    [D3.V3.js系列教程]--(十四)有路径的文字 1. 在 svg 中插入一個 text // 在 body 中插入一個 svg var svg = d3.select('body').appen ...

  4. 深入理解js系列一作用域是什么

    title: 深入理解js系列一作用域是什么? date: 2018-02-06 02:15:59 tags: 深入理解js系列 作用域 categories: JavaScript 作用域是什么? ...

  5. js带开关的时钟_昌利JS系列混凝土搅拌机衬板配件

    搅拌机衬板一般有扇形衬板.弧形衬板.异形板等组成,它安装在搅拌罐的内壁上,形成曲面形,起到对搅拌机内壁的保护作用.强制式混凝土搅拌机因为在搅拌物料的过程中搅拌筒内壁会受到大量的矿石.水泥粉料等物料的强 ...

  6. 原生js系列之DOM工厂模式

    写在前面 如今,在项目中使用React.Vue等框架作为技术栈已成为一种常态,在享受带来便利性的同时,也许我们渐渐地遗忘原生js的写法. 现在,是时候回归本源,响应原始的召唤了.本文将一步一步带领大家 ...

  7. 微信JS图片上传与下载功能--微信JS系列文章(三)

    概述 在前面的文章微信JS初始化-- 微信JS系列文章(一)中已经介绍了微信JS初始化的相关工作,接下来本文继续就微信JS的图片上传功能进行描述,供大家参考. 图片上传 $(function(){va ...

  8. 温故js系列(11)-BOM

    前端学习:教程&开发模块化/规范化/工程化/优化&工具/调试&值得关注的博客/Git&面试-前端资源汇总 欢迎提issues斧正:BOM JavaScript-BOM ...

  9. js系列教程5-数据结构和算法全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...

  10. js系列教程13-原型、原型链、作用链、闭包全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...

最新文章

  1. python 一张图画多条线_Gnuplot.py在一张图上绘制多条线
  2. 在CentOS 6.3 64bit上使用 smartmontools和MageCli 监测硬盘的健康状态
  3. pro mvvm 读书笔记
  4. 在Xcode6中搭建Python开发环境
  5. tomcat配置url跳转_web和tomcat的区别
  6. redis3.2.8 linux集群安装
  7. Spring Boot项目在GitHub上初始化及控管步骤
  8. 简单粗暴地理解 JS 原型链
  9. VS 2012 No exports were found that match the constraint 解决办法
  10. Scrapy入门程序点评
  11. 人脸识别算法-LBP算法及python实现
  12. 360安全卫士推出“极速版”:永久免费、无弹窗广告!
  13. python操作 docx
  14. 是兰大文科楼的辉煌灯火让我找到了自己
  15. python序列类型映射_python学习笔记(基础:变量,序列,映射) | 学步园
  16. 多线程处理大量数据 java
  17. spark系列-应用篇之通过livy提交Spark任务
  18. A1010——Radix(好多测试点…)
  19. 科技PRO实力测评:高端按摩椅市场综合PK,究竟谁才配得上机皇?
  20. Logic Pro X自带音色库列表

热门文章

  1. android pcm数据格式,android 实时PCM数据编码成AAC
  2. java封装的注意事项_新手学习Java之对象---封装
  3. java 表单字段扩展_如何从Chrome扩展程序填写网页表单中的文本字段?
  4. 力胜机器人_德男子两手臂尺寸悬殊 超粗右臂曾力胜掰手腕机器人
  5. 调制方式性能比较--BER,频带效率的极限
  6. MySQL的启动和停止
  7. 【知识图谱系列】多关系异质图神经网络CompGCN
  8. 蓝队应对攻击的常用策略二
  9. 架构高并发方案_架构 - 抖音微博等短视频千万级高可用、高并发架构设计
  10. signature=ed12edba242e439d545c9f98deb5e896,PROJECTION APPARATUS