Javascript# 系列文章目录五--数组

Javascript# 系列文章目录五



一、数组

简介

  • 是一个用来存储数据的对象 和Object类似,但是它的存储效率比普通对象要高

  • 数组中保存的内容我们称为元素

  • 数组使用索引(index)来操作元素

  • 索引指由0开始的整数

  • 数组的操作:
    - var arr = new Array();
    - var arr = [];

  • 向数组中添加元素
    - 语法:
    数组对象[索引] = 值;
    arr[0] = 123;
    arr[1] = “hello”;

  • 创建数组时直接添加元素
    - 语法:
    var arr = [元素1,元素2…元素N];
    - 例子:
    var arr = [123,“hello”,true,null];

  • 使用length属性来操作数组的长度
    - 获取长度:数组.length

  • 对于连续的数组,length获取到的就是数组中元素的个数
    - 修改数组的长度
    数组.length = 新长度
    - 如果修改后的length大于原长度,则多出的部分会空出来
    - 如果修改后的length小于原长度,则原数组中多出的元素会被删除
    - 向数组的最后添加元素
    数组[数组.length] = 值;

数组的方法

-push()
- 用来向数组的末尾添加一个或多个元素,并返回数组新的长度
- 语法:数组.push(元素1,元素2,元素N)
- pop()
- 用来删除数组的最后一个元素,并返回被删除的元素
- unshift()
- 向数组的前边添加一个或多个元素,并返回数组的新的长度
- shift()
- 删除数组的前边的一个元素,并返回被删除的元素
- slice()
- 可以从一个数组中截取指定的元素
- 该方法不会影响原数组,而是将截取到的内容封装为一个新的数组并返回
- 参数:
1.截取开始位置的索引(包括开始位置)
2.截取结束位置的索引(不包括结束位置)
- 第二个参数可以省略不写,如果不写则一直截取到最后
- 参数可以传递一个负值,如果是负值,则从后往前数
- splice()
- 可以用来删除数组中指定元素,并使用新的元素替换
该方法会将删除的元素封装到新数组中返回
- 参数:
1.删除开始位置的索引
2.删除的个数
3.三个以后,都是替换的元素,这些元素将会插入到开始位置索引的前边

        var arr = [1,2,3,2,1,3,4,2,5];

        for(i = 0; i <= arr.length; i++){
            for(j = i+1; j <= arr.length; j++){
                if(arr[i] == arr[j]){
                    arr.splice(j,1);
                    //删去一个后后续会自动部位,连续相同的数会出现漏的
                    j--
                }
            }
        }
        console.log(arr)

汇总方法:

连接两个数组,连接三个数组 - concat()
- 可以连接两个或多个数组,它不会影响原数组,而是新数组作为返回值返回

arr.concat(arr2,arr3)

将数组的所有元素连接成一个字符串 - join()
- 可以将一个数组转换为一个字符串
- 参数:
需要一个字符串作为参数,这个字符串将会作为连接符来连接数组中的元素
如果不指定连接符则默认使用逗号 ,

arr.join('@')

反转数组reverse()

  • 可以用来反转一个数组,它会对原数组产生影响

把数组转换为字符串 - toString()

按Unicode排序 数组排序 sort()

  • 可以对一个数组中的内容进行排序,默认是按照Unicode编码进行排序
    调用以后,会直接修改原数组。
  • 可以自己指定排序的规则,需要一个回调函数作为参数:
		function(a,b){
				
				//升序排列
			return a-b;
				
				//降序排列
			return b-a;
		}

按升序对数组排序
按降序对数组排序
按升序排列数字
按降序排列数字
按随机顺序排序数组中的数字
确定数组中最小的数
确定数组中最大的数
使用 Math.min() 确定数组中最小的数
使用 Math.max() 确定数组中最大的数
使用“自制的” myArrayMin 方法
使用“自制的” myArrayMax 方法
按数字属性排序对象
按字符串属性排序对象

遍历数组

  • 遍历数组就是将数组中元素都获取到
  • 一般情况我们都是使用for循环来遍历数组:
    for(var i=0 ; i<数组.length ; i++){
    //数组[i]
    }
		function getAdult(arr){
            var newArr = [];
            //先导入一个数列
            for(var i=0; i<arr.length; i++){
                var p = arr[i]
            }
            //做判断
            for(p.age >=18 /*指定数值*/){
                newArr.push(p)
            }
            return newArr
        }
        
        console.log(newArr)
  • 使用forEach()方法来遍历数组
    数组.forEach(function(value , index , obj){
    });

    forEach()方法需要一个回调函数作为参数,
    数组中有几个元素,回调函数就会被调用几次,
    每次调用时,都会将遍历到的信息以实参的形式传递进来,
    我们可以定义形参来获取这些信息。
    value:正在遍历的元素
    index:正在遍历元素的索引
    obj:被遍历对象

二、函数

call() apply()

- 这两个方法都是函数对象的方法需要通过函数对象来调用
- 通过两个方法可以直接调用函数,并且可以通过第一个实参来指定函数中this
- 不同的是call是直接传递函数的实参而apply需要将实参封装到一个数组中传递
  • arguments
    - arguments和this类似,都是函数中的隐含的参数
    - arguments是一个类数组元素,它用来封装函数执行过程中的实参
    所以即使不定义形参,也可以通过arguments来使用实参
    - arguments中有一个属性callee表示当前执行的函数对象

  • this
    - this是函数的上下文对象,根据函数的调用方式不同会执向不同的对象
    1.以函数的形式调用时,this是window
    2.以方法的形式调用时,this是调用方法的对象
    3.以构造函数的形式调用时,this是新建的那个对象
    4.使用call和apply调用时,this是指定的那个对象
    5.在全局作用域中this代表window


Date

  • 日期的对象,在JS中通过Date对象来表示一个时间
  • 创建一个当前的时间对象
    var d = new Date();
  • 创建一个指定的时间对象
    var d = new Date(“月/日/年 时:分:秒”);
  • 方法:
    getDate() 当前日期对象是几日(1-31)
    getDay() 返回当前日期对象时周几(0-6)
    - 0 周日
    - 1 周一 …
    getMonth() 返回当前日期对象的月份(0-11)
    - 0 一月 1 二月 。。。
    getFullYear() 从 Date 对象以四位数字返回年份。
    getHours() 返回 Date 对象的小时 (0 ~ 23)。
    getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
    getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
    getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
    getTime()
    - 返回当前日期对象的时间戳
    - 时间戳,指的是从1970年月1日 0时0分0秒,到现在时间的毫秒数
    计算机底层保存时间都是以时间戳的形式保存的。
    Date.now()
    - 可以获取当前代码执行时的时间戳

Math

  • Math属于一个工具类,它不需要我们创建对象,它里边封装了属性运算相关的常量和方法
    我们可以直接使用它来进行数学运算相关的操作,方法:
    Math.PI
    - 常量,圆周率
    Math.abs()
    - 绝对值运算
    Math.ceil()
    - 向上取整
    Math.floor()
    - 向下取整
    Math.round()
    - 四舍五入取整
    Math.random()
    - 生成一个0-1之间的随机数
    - 生成一个x-y之间的随机数
    Math.round(Math.random()*(y-x)+x);
    Math.pow(x,y)
    - 求x的y次幂
    Math.sqrt()
    - 对一个数进行开方
    Math.max()
    - 求多个数中最大值
    Math.min()
    - 求多个数中的最小值

包装类

  • 在JS中为我们提供了三个包装类:
    String() Boolean() Number()
    - 通过这三个包装类可以创建基本数据类型的对象
    例子:
    var num = new Number(2);
    var str = new String(“hello”);
    var bool = new Boolean(true);
    但是在实际应用中千万不要这么干
  • 当我们去操作一个基本数据类型的属性和方法时,
    解析器会临时将其转换为对应的包装类,然后再去操作属性和方法,操作完成以后再将这个临时对象进行销毁。

String字符串的相关方法

length - 获取字符串的长度
charAt() - 根据索引获取指定的字符
charCodeAt() - 根据索引获取指定的字符编码
String.fromCharCode() - 根据字符编码获取字符

result  =String.fromCharCode(0x2686)
//0x表示十六进制

concat()链接字符串

indexOf() lastIndexOf()
- 从一个字符串中检索指定内容
- 需要一个字符串作为参数,这个字符串就是要检索的内容,如果找到该内容,则会返回其第一次出现的索引,如果没有找到则返回-1。
- 可以指定一个第二个参数,来表示开始查找的位置

  • indexOf()是从前向后找
  • lastIndexOf()是从后向前找

slice()
- 可以从一个字符串中截取指定的内容,并将截取到内容返回,不会影响原变量
- 参数:
第一个:截取开始的位置(包括开始)
第二个:截取结束的位置(不包括结束)
- 可以省略第二个参数,如果省略则一直截取到最后
- 可以传负数,如果是负数则从后往前数
substring()
- 和slice()基本一致,不同的是它不能接受负值作为参数,如果设置一个负值,则会自动修正为0,
- 第二个参数小于第一个,自动调整位置
toLowerCase() - 将字符串转换为小写并返回
toUpperCase() - 将字符串转换为大写并返回
split()
- 可以根据指定内容将一个字符串拆分为一个数组
- 参数:
- 需要一个字符串作为参数,将会根据字符串去拆分数组,可以接收一个正则表达式,此时会根据正则表达式去拆分数组

str.split(",")

三、正则表达式

正则

用来定义一些字符串的规则,程序可以根据这些规则来判断一个字符串是否符合规则,
也可以将一个字符串中符合规则的内容提取出来。
创建正则表达式
- var reg = new RegExp(“正则”,“匹配模式”);
- var reg = /正则表达式/匹配模式

  • 语法:
    匹配模式:
    i:忽略大小写
    g:全局匹配模式
    设置匹配模式时,可以都不设置,也可以设置1个,也可以全设置,设置时没有顺序要求
  • 正则语法
    | 或
    [] 或
    [^ ] 除了
    [a-z] 小写字母
    [A-Z] 大写字母
    [A-z] 任意字母
    [0-9] 任意数字
在这里插入代码片

方法:

	test()
		- 可以用来检查一个字符串是否符合正则表达式
		- 如果符合返回true,否则返回false

match()
- 可以将字符串中和正则表达式匹配的内容提取出来
- 参数:
- 正则表达式,可以根据该正则表达式将字符串中符合要求的内容提取出来
并且封装到一个数组中返回

replace()
- 可以将字符串中指定内容替换为新的内容
- 参数:
- 第一个:被替换的内容,可以是一个正则表达式
- 第二个:替换的新内容

search()
- 可以根据正则表达式去字符串中查找指定的内容
- 参数:
正则表达式,将会根据该表达式查询内容,
并且将第一个匹配到的内容的索引返回,如果没有匹配到任何内容,则返回-1。

量词

重复内容出现的次数
{n} n表达出现次数
{m,n} m 到n次
{m,} m次以上
“+" 至少一次
”*“ 0个或多个,相当于{0,}
”?“0个或多个,相当于{0,1}
“^ $” 表示完全相等
“.” 指任意字符
. 需要用\作为转义字符 表示 .
\ 表示\
自变量用\表示
再构造函数中用\ 来代替

reg = /ab{1,3}/c;
reg = /^a/   //a开头
/a$/         //结尾
/^1[3-9][0-9]{9}$/
/\./  //表示.   /表示转义

  • 转义字符
    \ 在正则表达式中使用\作为转义字符
    . 表示.
    \ 表示
    . 表示任意字符
    \w
    - 相当于[A-z0-9_]
    \W
    - 相当于[^A-z0-9_]
    \d
    - 任意数字
    \D
    - 除了数字
    \s
    - 空格
    \S
    - 除了空格
    \b
    - 单词边界
    \B
    - 除了单词边界
    ^ 表示开始
    $ 表示结束

总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值