JavaScript数组,正则表达式

这篇博客主要介绍了JavaScript中的数组,包括定义、访问、遍历、API方法如push、pop、shift、unshift、slice等,以及正则表达式的基础知识,如构造函数、模式、数量词和常用API。还提到了数组的序列化和字符串方法,以及正则表达式的匹配方法。
摘要由CSDN通过智能技术生成

数组

数组是存放任意数据类型值的集合,容器。在数组字面量中,数组使用"[]“作为数组的边界,数组由多个元素组成,元素与元素之间通过”,"隔开,元素可以为任意数据类型。数组是一种特殊的对象,通过length属性来获取数组的长度(也就是数组中元素的个数)

    1. 数组的定义

      1. 数组字面量
var name = "name"
var arr = [
	12,name,true,
	"larry",
	{},
	function(){},
	[],
	null];
arr.length
  1. 构造函数
var arr = new Array(); 	//=》
var arr = [];
var arr = new Array(length);

创建一个长度为length的数组

var arr = new Array(2);
var arr = [undefined,undefined];

var arr = new Array(p1,p2,...);

创建一个数组,数组中的元素使用实参初始化

var arr = new Array(1,2,3);
var arr = [1,2,3];
  1. 数组的访问
    通过索引来访问,索引从0开始的,直到数组的长度-1,索引可以超过索引范围,只不过访问的值为undefined
var arr = [1,2,3];//索引:0~2

arr[0] 		//1
arr[100] 	//undefined
  1. 数组的遍历
    1. 普通for循环
var arr = [1,2,3];
	for(var i=0;i<arr.length;i++){
		var item = arr[i];
	}
  1. while循环
  2. do-while循环
  3. 增强for循环
for(var key in arr){
	var val = arr
}
  1. 数组在内存中的表现 var arr = [[1,2],[3,4],[5,6]];
arr[1][0]	//3
  1. 数组api
    arr可以调用Array.prototype的方法,也可以调用Object.prototype中的方法

api (应用程序编程接口)
1. 添加或者移除元素 【对原值进行了改变】

push() 入栈,将元素添加到数组的最后

参数:入栈的元素
返回值:入栈后数组的长度

pop() 出栈,将数组中的最后一个元素移除,并且返回

参数:none
返回值:被出栈的元素

shift() 出队,将数组中的第一个元素移除,并且返回

参数:none
返回值:被移除的元素

unshift() 插队,将元素添加到数组的最前面

参数:插队的元素
返回值:插队后数组的长度
  1. 排序方法【改变原值】
var arr = [82,1,43,2,8,32,5];
arr.mySort()
console.log(arr);
// [1,2,5,8.32,43,82]
sort();
默认情况下,按照每位字符在字符编码表中出现的位置进行排序
	sort(comparator)
	comparator
	接受两个参数a,b;
	如果a在b之前返回-1
	如果a在b之后返回1
function(a,b){
		if(a>b){
			return 1;//从小到大排序
		}else{
			return -1;
		}
	}
  1. 截取方法
    concat() 【不改变原值】

     数组合并			
     参数:多个数组
     返回值:合并的后的新数组
    

    slice(begin [,end])【不改变原值】

     截取子数组,并且返回
     参数: begin表示截取的开始位置;end默认为0
     返回值:截取后的子数组
    

    splice(begin,delete,insert,…)【改变原值】

     arr.splice(3,2)
     arr.splice(3,2,"terry","larry")
     返回值:被删除的元素组成的数组
    
    1. 索引方法
      indexOf()
      lastIndexOf()

    2. 序列化
      JSON.stringify()序列化
      JSON.parse( )反序列化

      字符串
      arr.join("|")
      将数组元素转换为字符串,使用"|"连接arr中的每个元素

    3. 迭代
      1)forEach
      没有return值,会改变原数组的值。

forEach(function(item,index,arr){

})

Array.prototype.myForEach = function(handler){
	for(var i=0;i<this.length;i++){
	handler.call(this,this[i],i,this)
	}
}
arr.myForEach(function(item,index,arr){})
  1. every
every(function(item,index,arr){
	return boolean
})
	当回调函数每次都返回true,返回值才为true
	当回调函数有一次返回false,返回值就为false,并且会停止执行
  1. some return ture/fasle;
some(function(item,index,arr){
	return boolean
})
当回调函数每次都返回false,返回值才为false
当回调函数有一次返回true,返回值就为true,并且会停止执行
  1. filter
    return [检测的结果] 将检测的结果保存在一个数组,然后返回该数组
filter(function(item,index,arr){
	return boolean
	})
		当回调函数返回true的时候,当前元素会被添加到返回值数组中
  1. map
    不会改变数组的值,相当于映射一个新的数组在新的的数组里面进行操作,return有值。
map(function(item,index,arr){
	return v
})
将回调函数的返回值组成一个新的数组返回

正则表达式

RegExp 构造函数
1) 实例化正则表达式

	1. 构造函数
		var pattern = new RegExp("正则表达式","模式");
	2. 正则表达式字面量
		var pattern = /正则表达式/模式
  1. 正则表达式
    (0-9){4}-(0-9){7}
  1. 字符类:

     . 	任意字符
     [0-9] 	匹配中括号中0~9之间的任意一个字符
     \d 			与[0-9]含义相同
     [^0-9] 	除了0~9之外的其他任意字符
     \D 			与[^0-9]含义相同
     ^	[0-9] 	^表示行首;使用数字作为一行的开始
     [0-9]$ 	$表示行尾;使用数字作为一行的结尾
     [a-z] 	匹配中括号中a~z之间的任意一个字符
     \w 			基本字符 [A-Za-z0-9_]
     \W 			非基本字符[^A-Za-z0-9_]
     \s 			空白符 
     \S 			非空白符	
     \t 			tab	制表符
     \r 			return 
     \n 			next 
    
  2. 分组
    url地址
    协议://ip:port/路径

     静态网页的部署地址为:http://134.175.154.93:80/lianjia\n 
     svn服务器的地址为:svn://134.175.154.93/web1902/group0 \nftp
     服务的地址为 ftp://134.175.154.93:22/
    

    /([a-z]{3,5})😕/([a-z0-9.]{2,})(:\d{2,6})?(/.*)/igm

  3. 数量词

     exp* 		exp重复0到多次
     exp+ 		默认贪婪匹配,尽可能多的匹配
     exp? 		0次或者1次
     exp+? 	非贪婪匹配,尽可能少的匹配
     exp{4} 	exp重复4次
     exp{4,} exp重复4+次
    
     [a-z]+//a~z多次
     
     0351-4512339   /([0-9]){4}-/1{7}/
    
    1. 模式
      i ignoreCase
      g global
      m multiline

    2. api
      继承:RegExp.protype.xxx

      pattern.lastIndex;

       下次索引开始的位置,当模式包含g,lastIndex才维护;
       否则,lastIndex为0,那么每次匹配都从索引为0的位置开始
      

      pattern.ignoreCase

       如果模式中包含i,该属性为true
      

      pattern.global

       如果模式中包含g,该属性为true
      

      pattern.multiline

       如果模式中包含m,该属性为true
      

      pattern.source

       正则表达式
      

      pattern.flags

       	模式
      

      pattern.test(str)=str.search(pattern)

       检测字符串str是否匹配正则表达式pattern,如果匹配返回true
       参数:待检测字符串
       返回值:boolean
      

      pattern.exec(str)=str.match(pattern)

       查找字符串str中符合正则表达式的内容
       返回值
       	[
       		匹配的内容
       		index: 	匹配的起始位置
       		input: 	参数字符串
       		groups: 分组
       	]
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值