每日一结(10.25)

一、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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值