字符串的遍历,字符串虽是简单数据类型却有对应的属性和方法,这是因为字符串是包装类型(当然布尔类型和数字类型也是包装类型),临时具有对象的属性和方法,在使用完后就会释放对象。

简单的淡入淡出的轮播图,原理就是将多个图片使用相对定位定在一起,令第一张添加一个类,元素类型为显示,然后加上定时器,利用for循环一次给后面的图片添加类名,在此之前要用排他思想,清除其他图片的类名,

给当前图片设置类名。

冒泡排序,经常出现在笔试题中,利用双层for循环来实现,外层循环决定要排序的次数,里层循环确定每次循环要走几步。如下

let arr1 = [9, 7, 3, 1, 5, 11];
//外层循环是次数,所以只需要length-1次就能完成排序
for (let i = 0; i < arr1.length - 1; i++) {
for (let j = 0; j < arr1.length - i - 1; j++) { //内层循环是移动次数
if (arr1[j + 1] < arr1[j]) { //解构赋值
[arr1[j], arr1[j + 1]] = [arr1[j + 1], arr1[j]]; //从小到大
}
}
}

然而数组中的排序,这么简单的功能,底层肯定封装得有函数,那就是sort()方法,如果sort()里面不跟参数,直接对纯数字数据类型的数组进行排序,默认是从小到大;如果里面有纯数字的字符串,这不会进行隐式转换,所以排序要出错;sort()方法里面可以跟参数,但是这个参数是个函数,所以这个函数称之为回调函数,回调函数有a,b两个值,如果回调函数返回的是a - b则是升序排序,反之则是降序排序。

下面这些事字符串的常用方法

API 字符串中的API的作用(全部API都不会破坏原字符串)
str.toUpperCase( ) 将字符串中的小写转换为大写
str.toLowrCase( ) 将字符串中的大写转换为小写
str.charAt( i ) ==>等同于str[ i ] 字符串通过索引找到某个字符
str.charCodeAt( i ) 根据字符找ascii码
String.fromCharCode( i ) 根据十进制数找到阿斯克码
arr/str.indexOf( '关键字',starti ) 通过关键字来找到在数组或字符串中的下标,开始检索下标默认是从0开始的。
str / arr.slice( starti, endi + 1 ) (能取负值)截取子串,含头不含尾,若想含尾就在后面+1
str . substring( ) 和slice基本一样,但是不能取负值
str.substr( starti , n ) 截取首个字符串的索引号,第二个参数为截取个数
str . concat( ) 用于拼接字符串,但是更加推荐+号
str . replace( '关键字'/正则表达式, ’替换字符‘ ) 用于替换关键字,搭配正则表达式会更好用哦。
str . split('分隔符号') 用于字符串的切片,切片以分隔符号为准,若是空字符串则输出单个字符组成的数组

其中indexOf也能用于数组的去重,如下:

let arr = [];
let newArr = [1, 1, 'true', 'true', true, true, 15, 15, false, false, undefined, undefined, null, null, NaN, NaN, 'NaN', 0, 0, 'a', 'a', {}, {}];
for (let i = 0; i < newArr.length; i++) {
if (arr.indexOf(newArr[i]) === -1) {
arr.push(newArr[i]);
}
}
console.log(arr);

如果要计算某个字符在字符串中出现的次数,可以使用哈希数组来实现,因为js里面一切的东西都是对象:除了undefined和null,【一切对象的底层都是hash数组】;

字符串的split()方法可以用来切割用连接符号组成的字符串;然后就可以利用这个搭配DOM操作来对数据进行渲染。

正则表达式:即字符串中的匹配规则,通常用于判断用户输入的数据是否合法。

格式:/正则表达式/后缀  后缀通常有i 忽略大小写,g全文匹配

用户可以自定义字集,也可以用预定义字集。预定义字集有  \d === [ 0 - 9 ]  \w === [0-9A-Za-z]     \s 包括:空格、换行、制表符

可以在字集的后面添加花括号来确定匹配的个数:

字符集{ n,m }:前边相邻的字符集,至少n个,最多m个。

字符集{ n, }:前面相邻的字符集,至少n个,多了不限制

字符集{ n }:前面相邻的字符集,指定个数为n

若没有明确数量

?:前边相邻的字符集,可有可无,最多一个。

*:前边相邻的字符集,可有可无,多了不限

+:前边相邻的字符集,至少一个,多了不限

选择和分组:

    选择:在多个规则中选一个

      规则1 | 规则2

    分组:将多个子规则临时组成了一组规则

      (规则1 | 规则2)  

指定匹配位置:

    ^确定开头,$确定结尾

字符串的两个方法支持正则:

    str.split(正则表达式);用于简单切割

    str.replace(正则表达式,替换的字符);用于替换

    当然上面写的替换字符  也可以  是个回调函数,可以根据不同的字符串个数替换成不同程度的内容。如下:

str=str.replace(/正则表达式/后缀,function(a,b,c){
//第一个形参是正则匹配到的关键字
//第一个形参是正则匹配到的关键字的下标
//原文本身
return a.length==2?"**":"***";
})

    格式化数据,例如将身份证上的生日信息提取出来 如下:

var str="500103198602215933";
var reg=/(\d{6})(\d{4})(\d{2})(\d{2})(\d{4})/;
str=str.replace(reg,function(a,b,c,d,e,f){
//在replace的时候,正则出现了分组,我们会得到更多的形参
//有多少个分组就会多出现多少个形参
//第一个形参是正则匹配到的关键字
//第二个形参会得到关键字的索引号
//第三个形参会得到第一个分组获取到的部分
//第四个形参会得到第二个分组获取到的部分
//第五个形参会得到第三个分组获取到的部分
//...
return c+"年"+d+"月"+e+"日"
})
console.log(str);

    当然也可以密码的强度验证:

// 预判公式:
var reg = /^(?![0-9]+$)规则$/ //不能全由数字组成
var reg = /^(?![a-z]+$)规则$/ // 不能全由小写字母组成
var reg = /^(?![0-9a-z]+$)[0-9A-Za-z]{4}$/ // 不能全由数字组成,也不能全由小写字母组成,也不能由数字和小写的组合组成 - 至少一个大写字母 //4位密码,数字和字母的组合,至少出现一位数字和大写字母
var reg=/^(?![0-9a-z]+$)(?![A-Za-z]+$)[0-9A-Za-z]{4}$/ //4位密码,数字和字母的组合,至少出现一位数字和大写字母和小写字母
var reg=/^(?![0-9a-z]+$)(?![A-Za-z]+$)(?![A-Z0-9]+$)[0-9A-Za-z]{4}$/

当然正则也是复杂对象之一;

1.创建正则对象:

    字面量:var  reg = /正则表达式/后缀;

    构造函数方式:var reg2 = new RegExp("正则表达式",“后缀”);

2.正则对象中的API:验证

    var bool = reg.test("用户输入的内容”);

    true内容合法,false内容非法;

Error对象:错误对象

浏览器自带四种错误类型:可以快速找到自己错误的类型

    语法错误:SyntaxError

    引用错误:ReferenceError

    类型错误:TypeError

    范围错误:TypeError 只会出现在num.toFixed( n ) n>100

try...catch(error){  }  参数error表示错误提示,花括号里面可以自定义输出错误提示。

同样可以自己建立错误对象:

    throw new Error( "自定义错误信息" );

Math对象:数学对象

数学对象中常用的属性便是  Math.PI 用来表示π

以下是数学对象常见的API

API 数学中的API的作用
Math.ceil( num ) 向上取整
Math.floor( num ) 向下取整
Math.round( num ) 四舍五入的取整(但是更加推荐parseInt()==>向下取整; toFixed( n )如果里面的n为0则代表四舍五入取整,但是此方法要配合parseInt()使用)
Math.pow( 底数,幂) 代替位运算,指数次方
Math.sqrt( num ) 开方
Math.max( num ) &Math.min( num ) 获取一串数的最大值和最小值,但是如果是数组的话要搭配apply使用,格式Math.max/min.apply( Math,arr ) apply有两个功能:1.借用2.悄悄的将数组打散为单个元素
Math.abs( 负数) 可以将负数转成正数
Math.random( num ) 取最大值和最小值的公式 Math.random( )*(max - min + 1) + min
其他 数学对象还提供了

Date对象:日期对象

四种创建:

var now=new Date(); //获取当前时间
var birth=new Date("yyyy/MM/dd hh:mm:ss"); //创建自定义时间
var birth=new Date(yyyy,MM-1,dd,hh,mm,ss); //书写时间的方式,但是不推荐

复制日期操作:先创建一个日期,然后再把这个日期赋值给另外一个变量,然后再操作这个变量,用API进行加减操作。

时间的API:

    分量:时间单位

    年月日星期:FullYear Month Date Day

    时分秒毫秒:Hours Minutes Seconds Milliseconds

    每一个分量都有一对儿getXXXX(获取分量)/setXXXX(设置分量)

特殊:

    1.取值范围:   

    FullYear:当前的年份的数字;

    Month:0-11

    Date:1-31

    Day:0-6

    Hours:0-23

    Minutes:0-59

    2.Day星期,没有set方法

    3、如果希望对某个分量进行加减操作

    date.setXXX( date.getXXX +/- n )

    4、格式化日期为字符串:本地格式

    date.toLocaleString();//本地日期格式 - 垃圾:具有兼容性问题,在老IE上显示效果不一样;

函数对象

函数的创建:1.声明函数;2.关键字定义函数;3.构造函数创建函数(Function构造函数里面可以放入拼接的字符串,且return可以是个变量,如下所示)

var arr=[12,5,25,432,7,54,4312,41];
var user=prompt("请进行排序,如果输入a-b则为升序排列,如果输入b-a则为降序排列")
var compare=new Function("a","b","return "+user);
arr.sort(compare);
重载 overload:相同的函数名,根据传入的实参的不同(arguments),可以自动选择对应的函数进行执行
匿名函数的自调(立即执行函数):

为什么使用匿名函数的自调:因为匿名函数,没有变量引用着,用完,垃圾回收器就会发现此引用类型没有人引用着,则垃圾回收器的计数器为0,垃圾回收器就会吧此函数释放掉。

匿名函数的回调:将函数作为了一个实参,传递给其他函数调用(是匿名函数,没有自调,就是回调)

后面还有个箭头函数来简化回调函数的操作。

学习JavaScript第三周的更多相关文章

  1. 学习javascript数据结构(三)——集合

    前言 总括: 本文讲解了数据结构中的[集合]概念,并使用javascript实现了集合. 原文博客地址:学习javascript数据结构(三)--集合 知乎专栏&&简书专题:前端进击者 ...

  2. 学习Java第三周

    这是学习java的第三周 上周想要学习的这周也完成了,研究和测试代码花费了大约2个小时,发现这些内容方法居多,想要熟练掌握就要好好记忆了 包装类 数字处理类 Object类 Java类包 内部类 下一 ...

  3. H5学习的第三周

    上周,我们结束了京东站的制作,本周我们开始了手机站和响应式网站的学习,并仿制了一个手机端界面和一个响应式界面,在完成这两个网站的过程中我遇到了许多问题,也了解了它们的解决方法,接下来我讲详细介绍本周我 ...

  4. 学习 JavaScript (三)核心概念:语法、变量、数据类型

    JavaScript 的核心概念主要由语法.变量.数据类型.操作符.语句.函数组成,这篇文章主要讲解的是前面三个,后面三个下一篇文章再讲解. 01 语法 熟悉 JavaScript 历史的人应该都知道 ...

  5. 学习。NET三周心得

    目前为止 学习.NET已经快一个月了,有刚开始的不懂,到中途懵懂.再到现在的简懂 ,感觉自己迷了好多天,学习程序员跟学其他的程序还不同,其他的有固定格式,而.NET则固定很少 ,一直在用方法连接前后台 ...

  6. Python学习笔记第三周

    目录 一.基础概念 1.集合 集合方法 a.设置集合 b.取交集 c.取并集 d.取差集 e.判断子集 f.判断父集 g.对称差集 基本操作: a.添加 b.删除 c.discard删除 d.长度 e ...

  7. 20135316王剑桥Linux内核学习笔记第三周

    20135316王剑桥 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC 1000029000 三个法宝:存储程序计算机.函数调 ...

  8. Python基础学习(第三周)

    集合的操作 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之间的交集,差集,并集等关系 集合的写法 list_1 = set([ ...

  9. 20145330《Java程序设计》第三周学习总结

    20145330 <Java程序设计>第三周学习总结 第三周知识的难度已经逐步上升,并且一周学习两章学习压力也逐渐加大,需要更高效率的来完成学习内容,合理安排时间. 类与对象 对象(Obj ...

  10. Python 学习日记(第三周)

    知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...

随机推荐

  1. pip3 install

    python3 -m venv tutorial-env source tutorial-env/bin/activatepip3 install *deactivate 

  2. JIT和AOT的区别

    http://net-informations.com/faq/qk/jit.htm Compilers are tools that convert human readable text into ...

  3. vue IE9兼容flex布局 css3(转载)

    原文 https://blog.csdn.net/shihezhengshz/article/details/118860562 写这文章的时候的我,心力憔悴鸭,找了好长时间,呜呜┭┮﹏┭┮ 好了,开 ...

  4. SAP abap外部断点

    如图所示:

  5. select remove option safari 兼容

    select 移除某一 option 的 javascript 公司用的代码是 var ddlPrimaryResource = document.getElementById(ddlPrimaryR ...

  6. Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M5:test (default-test) on project

    updated to from jdk16 Java jdk 8 or 11 to support jenkins Build run. Plugin management tags aligned ...

  7. apk签名之后安装失败

    Android Studio 3.0.1 很奇怪的一个现象,直接run的话可以成功,debug也可以,但是用签名打包之后,却安装失败,原来是打包的时候选错了.原来签名时,Signature Versi ...

  8. win10 python mysqlclient 安装问题 已解决

    用习惯了Linux   忽然换到win10 超级不习惯  今天下午就一个mysqlclient 安装弄了好长时间  ,最后发现是得改名  真是想爆粗口. 下面直接进入正题: 下载地址  https:/ ...

  9. 数据库管理工具naicat+DG

    DG 参考链接:https://www.cnblogs.com/zuge/p/7397255.html 自我感觉: 亲切,万能,idea用多了... 石皮 解 用学生账号登陆就可以(我用的这一种) 工 ...

  10. 12个有用的JavaScript数组技巧

    数组是Javascript最常见的概念之一,它为我们提供了处理数据的许多可能性,熟悉数组的一些常用操作是很有必要的. 1.数组去重 1.from()叠加new Set()方法 字符串或数值型数组的去重 ...