文章目录
前言
本文将会对于Javascript内置对象之数组对象,正则表达式进行详细的说明总结;同时补充了三个点运算的相关内容。
一、javascript内置对象之Array对象
1.数组的定义方式,特点及属性
数组的定义方式(两种):
(1)采用new的方式:var arr = new Array();
(2)采用中括号的方式:var arr2 = [1,2,3,4,5];(与c语言中定义数组相似)
数组的特点:
1.长度不是固定的,可以随时变化
2.数组的下标可以是任意数据
3.数组的内容可以是任意数据
数组的属性:
1.length表示数组的长度
2.constructor:返回创建数组对象的原型函数
3.prototype:允许你象数组对象添加属性或者方法
代码如下:(示例)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<script>
//定义方式一
//1.定义一个空数组,初始长度为0
var arr = new Array() ;
console.log(arr.length)
//2.定义一个数组,初始长度为4
var arr1 = new Array(4) ;
console.log(arr1.length)
//3.定义一个数组,初始长度是3,里面的数据是4,5,6
var arr2 = new Array(4,5,6) ;
console.log(arr2.length)
for(let i = 0 ;i<arr2.length ;i++)
console.log("arr2:",arr2[i])
// 4.定义一个数组,长度为1,内容为字符串5
var arr3 = new Array("5") ;
console.log("arr3",arr3.length)
//定义方式二:
let arr4 = [] ; //定义一个空数组
let arr5 = [1,2,32] // 定义一个数组,内容是1,2,32
console.log(arr5);
</script>
<body>
</body>
</html>
2.数组的方法
方法 | 描述 |
---|---|
push() | 添加元素 |
shift() | 删除首元素 |
join() | 用指定的字符串将数组的数据连接为一个字符串 (如果里面没有传,默认用逗号链接) |
concat() | 连接两个或者更多的数组,返回的是一个新的数组 |
pop() | 删除数组的最后一个元素并返回删除的元素 |
reserse() | 颠倒数组中元素的顺序 |
slice() | 选取数组的一部分,返回的是指定索引到末尾的元素的数组(新数组) |
splice() | 指定索引处开始删除指定长度的数据,添加新的数据 |
sort() | 进行排序 |
unshift() | 向数组的开头添加元素 |
indexof() ,lastIndexOf | indexOf搜索数组中的元素并显示的它的位置,lastIndexOf 搜索数组中的元素并把它最后一次出现的位置返回 |
map() | 将数组中的每个元素都做相同的处理,需要传递一个函数对象做实参,第一个参数就是数组中的每个元素 |
filter() | 将数组中的元素进行过滤;需要传递一个函数参数,第一个参数是代表数组中的每个元素, js引擎会调用函数做过滤,需要返回true,或者false,表示满足或者不满足条件 |
some() | 检索数组元素中是否有元素符合指定条件 |
reduce(), reduceRight() | reduce将数组元素计算为一个值(从左到右),reduceRight同理(从右到左) |
every() | 检索数值元素的每个元素是否符合条件 |
代码如下:(部分示例)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<script>
//index,indexOf
let arr = ['中国','美国','菲律宾','日本','菲律宾','越南'] ;
let index = arr.indexOf('菲律宾') ;
let index1 = arr.lastIndexOf('菲律宾')
console.log(index)
console.log(index1)
//reduce,reduceRight
let ps = [
{name:'张三',age:19,height:176},
{name:'李四',age:25,height:173},
{name:'王麻子',age:15,height:189},
{name:'王五',age:23,height:175},
] ;
//希望计算所有人的年龄的和
let sum = ps.reduce((p,p1) =>{
console.log(">>" ,p.age,p1.age)
// console.log(p1.age + p.age)
let age = p.age + p1.age ;
let obj = {"age":age}
return obj ;})
console.log("sum:",sum.age)
//希望计算所有人的身高和
let hsum = ps.reduceRight((p,p1)=>{
console.log("<<" ,p.height,p1.height)
let h = p.height + p1.height ;
let obj = {'height': h} ;
return obj ;
}) ;
console.log("sum height:" ,hsum.height)
let arr = [1,2,3,4] ;
let s = arr.reduce((v,v1) => {
console.log('===',v,v1)
return v + v1}) ;
console.log(s)
</script>
</body>
</html>
3.数组元素的获取
1.获取单个元素:arr[index]
2.获取多个元素:
(1)for …in循环:对对象属性进行循环
(2)for …of循环:对内容进行循环
3.forEach方法:第一个参数代表了数组中的每个元素,第二个参数代表了索引,第三个参数表示数组的json格式的对象
代码如下:(示例)
<script>
let arr = ['北京','上海','杭州','深圳'] ;
//1.获取单个元素
//console.log(arr[1])
//2.获取多个元素
//for ....in 循环 : 对对象的属性进行循环
// for(let coun in arr)
// console.log(coun,arr[coun])
//打印p标签的各种属性
// var p = document.getElementById("p")
// for(let attr in p)
// console.log(attr)
//3.for....of循环 : 对内容进行循环
// for(let coun of arr)
// console.log(coun)
//4.forEach方法
arr.forEach(function(v,index,json){
console.log(v,index,json)
})
</script>
二、javascript内置对象之正则表达式(RegExp)
1.正则表达式的描述:
1》正则表达式是描述字符模式的对象
2》正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具
2.语法:
var patt = new RegExp(pattern,modifiers);
或者是
var patt = /pattern/modifiers;
pattern(模式)描述了表达式的模式;
modifiers(修饰符)用于指定全局匹配、区分大小写的匹配和多行匹配
注意:
当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠\
).
以下定义变量是等价的:
var re = new RegExp("\w+");
var re = /\w+/;
代码如下:(示例)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<script>
var reg = /a+/i
let s = "i hve money " ;
let s1 = reg.exec(s) ;
console.log(s1)
let f = reg.test(s)
console.log(f)
var reg1 = /a{1,5}/i
console.log(reg1.test('ab'))
console.log(reg1.test('abcfrf'))
let s2 = reg1.exec('mnabcdefg') ;
console.log(s2[0])
console.log(s2)
//匹配一下电子邮箱
//abcd@163.com
let reg2 = /.+@\d{3,}\..{2,3}/i
console.log(reg2.test('zhang@163.com'))
console.log(reg2.test('@163.com')) //@符号之前只有要有1个字符
console.log(reg2.test('zhang163.com')) //没有@符号,所以不符合要求
console.log(reg2.test('zhang@1114.com')) //@符合到圆点之间至少要有3个数字
console.log(reg2.test('zhang@1114com')) //没有圆点
console.log(reg2.test('zhang@1114.commaa')) //没有圆点
console.log(reg2.exec('zhang@1114.commaa'))
</script>
</body>
</html>
三、三个点运算(...
附加知识)
定义:就是把数组或者是集合进行拆分,然后把元素一个一个进行传递
代码如下:(示例)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<script>
let arr = [1,2,3,4,5] ;
console.log(arr);
console.log(...arr);
let set1 = new Set([1,2,3,4,5,8,9]) ;
console.log(set1);
console.log(...set1);
let map1 = new Map() ;
map1.set("name","张三丰") ;
map1.set("age","20") ;
console.log(map1.keys());
console.log(...map1.keys());
function fun(v){
console.log(...v);
}
fun(arr)
</script>
</body>
</html>