一、sort排序方法
1.基础用法: sort() 不传参 根据ASCII编码进行排序的 "0"-48
代码:
var newArr = arr.sort();
console.log(newArr);//[1, 15, 20, 3, 6, 7, 8, 9]
2.扩展使用:sort(function(a , b){ }) 带参数 根据number类型排序
代码:
var arr = [1,9,7,8,3,6,15,20];
arr.sort(function(a,b){
console.log(a , b);//a和b是两个相邻的比较元素 a是后一个元素 b是前一个元素
return a - b;//从小到大
return b - a;//从大到小
})
console.log(arr);
(1)根据对象中某一个属性进行排序 根据年龄排序
代码:
var arr = [
{
"name":"派大星",
"age" : 6,
"date":"1999-10-1"
},{
"name":"海绵宝宝",
"age" : 4,
"date":"2003-9-25"
},{
"name":"章鱼哥",
"age" : 5,
"date":"2002-4-5"
},{
"name":"大头儿子",
"age" : 3,
"date":"2007-3-15"
},{
"name":"小头爸爸",
"age" : 3,
"date":"2007-3-15"
},
]
如果两个值相同,是根据原数组中的顺序结构显示
arr.sort(function (a, b) {
console.log(a.age, b.age);//a和b是两个相邻的元素,{},{}
return a.age - b.age;//从小到大
})
console.log(arr);
(2)根据对象中的日期排序 日期排序是根据时间戳进行排序
代码:
var arr = [
{
"name":"派大星",
"age" : 6,
"date":"1999-10-1"
},{
"name":"海绵宝宝",
"age" : 4,
"date":"2003-9-25"
},{
"name":"章鱼哥",
"age" : 5,
"date":"2002-4-5"
},{
"name":"大头儿子",
"age" : 3,
"date":"2007-3-15"
},{
"name":"小头爸爸",
"age" : 3,
"date":"2007-3-15"
},
]
new Date(日期) 会自动进行隐式转换 转成时间戳的形式
Date.parse(字符串日期) 将字符串格式的日期转换成时间戳
arr.sort(function (a, b) {
return Date.parse(a.date) - Date.parse(b.date)
})
console.log(arr);
(3)根据对象中的中文排序
代码:
var arr = [
{
"name":"派大星",
"age" : 6,
"date":"1999-10-1"
},{
"name":"海绵宝宝",
"age" : 4,
"date":"2003-9-25"
},{
"name":"章鱼哥",
"age" : 5,
"date":"2002-4-5"
},{
"name":"大头儿子",
"age" : 3,
"date":"2007-3-15"
},{
"name":"小头爸爸",
"age" : 3,
"date":"2007-3-15"
},
]
/* a.localeCompare(b) 字符串根据a - z从小到大进行排序
b.localeCompare(a) 字符串根据a - z从大到小进行排序 */
// g j z z h g高珂俊 h胡兴伟 j吉涛涛 z张相渊 z朱顺杰
arr.sort(function (a, b) {
// return a.name.localeCompare(b.name)
return b.name.localeCompare(a.name)
})
console.log(arr)
3.随机排序 Math.random() - 0.5
var arr = [1, 2, 3, 4, 5, 6];
arr.sort(function (a, b) {
return Math.random() - 0.5;
})
console.log(arr);
二、数组的迭代方法
1. every
(1)语法:
数组:every(function(item,index,array){ item是当前元素 index当前元素下标 array是当前操作的数组 })
(2)作用:
对数组元素进行判断 当所有的判断结果为true的时候 才会返回true
(3)代码:
var arr = [100, 90, 60, 78, 90];//true true true true true
// 需求:成绩是否都及格
var res = arr.every(function (item, index) {//item 当前遍历的元素 100 40 60 78 90 //index是下标 0 1 2 3 4
return item >= 60;
})
console.log(res);//true
2.some
(1)语法:
数组:some(function(item,index,array){ item是当前元素 index当前元素下标 array是当前操作的数组 })
(2)作用:
.some:对数组元素进行判断 只要有一个为true 结果就为true
(3)代码:
var arr = [100, 90, 60, 78, 90];//true false false false false
// 需求:成绩中有100分的吗?
var res = arr.some(function (item, index) {//item 当前遍历的元素 100 40 60 78 90 //index是下标 0 1 2 3 4
return item == 100;
})
console.log(res);//true
3.filter
(1)语法:
数组:filter(function(item,index,array){ item是当前元素 index当前元素下标 array是当前操作的数组 })
(2)作用:
filter(筛选):对数组元素进行判断 结果为true的元素会组成一个新的数组进行返回
(3)代码:
var arr = [100, 90, 60, 78, 90];//true true false false true
// 需求:将成绩大于90的元素筛选出来
var res = arr.filter(function (item, index) {//item 当前遍历的元素 100 40 60 78 90 //index是下标 0 1 2 3 4
return item >= 90
})
console.log(res);//[100,90,90]
4.map
(1)语法:
数组:map(function(item,index,array){ item是当前元素 index当前元素下标 array是当前操作的数组 })
(2)作用:
map:遍历数组 有返回值 返回值会组成一个新的数组进行返回
(3)代码:
var arr = [50, 70, 20, 10];
// 需求:给所有的成绩都加5分
var res = arr.map(function (item, index) {//item 50 70 20 10
return item + 5
})
console.log(res);//[55, 75, 25, 15]
5.forEach
(1)语法:
数组:forEach(function(item,index,array){ item是当前元素 index当前元素下标 array是当前操作的数组 })
(2)作用:
forEach:遍历数组 没有返回值
(3)代码:
var arr = [50, 70, 20, 10];
arr.forEach(function (item, index) {
console.log(item, index);
})
三、正则对象
1.字面量创建 /正则表达式/修饰符 \d 0-9 [0-9]
2.使用new关键字创建 new RegExp(正则表达式,修饰符)
3.字面量创建和new关键字创建有什么区别
(1)字面量创建的正则表达式中 没有变量的概念
(2)new关键字创建的 是可以识别变量
四、修饰符
1.g gloal(全局):执行一个全局的匹配
2.i ignore case 执行一个不区分大小写的匹配
五、字符串自带的检索方法
字符串中有些方法可以直接写正则表达式:replace split--分割 match search1.
(1)replace
var str = "0823web0823web0823web";
//需求:将数字都替换成*
var reg = /\d/g;//\d 匹配0-9之间的任意一个数 [0-9]
var newStr = str.replace(reg, "*")
console.log(newStr);
(2)split(分割标识) 分割标识也可以是一个正则表达式
var str = "q1w2e3r4t5y6u";
// 需求:去掉数字 先根据数字分割字符串
var reg = /\d/g;
var newStr = str.split(reg);
console.log(newStr.join(""));//["q","w","e","r","t","y","u"] "qwertyu"
(3)match 挑选满足条件的组成一个新的数组返回
var str = "q1w2e3r4t5y6u";
// 需求:把数字都挑选出来
var reg = /\d/g;
var newArr = str.match(reg);
console.log(newArr);//["1","2","3","4","5","6"]
(4)search的功能和indexof一样 区别:search可以使用正则
var str = "q9w2e3r4t5y6u";
var reg = /\d/g;
var index = str.search(reg);//查找str这个字符串中 首次出现数字的元素位置
console.log(index);//1
六、正则对象中的检索方法
1.正则对象:test exec 正则表达式.test() 正则表达式.exec()
[] 匹配[]中的任意字符
var reg = /^1[3-9]\d{9}$/;
var phone = "11456789011";
console.log(reg.test(phone));//false
2.正则表达式.exec(检索的字符串)
检测通过则是返回数组 数组中包含检索通过的字符和下标以及其他信息 如果检索不到则是返回null
不加g:每次都是从下标为0的位置开始检索 检测到一个就停止
加g:从上次检索的位置开始进行查找 检索到一个就停止
注意:检索到最后为null 为null再检索是从头开始
var str = "q1w2e3r4t5y6u7";
var reg = /\d/g;
console.log(reg.exec(str));//['1', index: 1, input: 'q1w2e3r4t5y6u7', groups: undefined]
console.log(reg.exec(str));//['2', index: 3, input: 'q1w2e3r4t5y6u7', groups: undefined]
console.log(reg.exec(str));//['3', index: 5, input: 'q1w2e3r4t5y6u7', groups: undefined]
console.log(reg.exec(str));//4
console.log(reg.exec(str));//5
console.log(reg.exec(str));//6
console.log(reg.exec(str));//7
console.log(reg.exec(str));//null
console.log(reg.exec(str));//1
console.log(reg.exec(str));//2