数组对象和正则对象

18 篇文章 0 订阅

.1选择排序和冒泡排序

选择排序:当前元素依次和后面每个元素进行比较  如果后面的数比较小,就交换位置
var arr = [10,9,12,5,1];
for(var i = 0;i<arr.length;i++){
    for(var j = i+1;j<arr.length;j++){
       if(arr[i] > arr[j]){
           var temp = arr[i];
           arr[i]  = arr[j]
           arr[j] = temp;
       }
    }
}
​
冒泡排序:相邻的两个元素进行比较  如果后面的元素比较小 就交换位置
var arr = [10,9,12,5,1];
for(var i = 0;i<arr.length-1;i++){
  for(var j = 0;j<arr.length-1-i;j++){
     if(arr[j] > arr[j+1]){
           var temp = arr[i];
           arr[i]  = arr[j]
           arr[j] = temp;
       }
  }
}

2.2数组的排序方法

  • sort排序:数组自带的排序方法

数组.sort()  不传参
数组.sort(function(a,b){
  
})   传参
  • 基础使用---不传参

        var arr = [1, 9, 7, 8, 3, 6, 15, 20];
        // 1.基础使用:sort() 不传参 根据ASCII码进行排序的  0-48
        var newArr = arr.sort();
        console.log(newArr);//[1, 15, 20, 3, 6, 7, 8, 9]
  • 扩展使用:sort(function(a,b){}) 带参数 根据number类型排序

// 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);//[20, 15, 9, 8, 7, 6, 3, 1]
  • 根据对象中某一个属性进行排序 根据年龄排序

 var arr = [
            { "name": "高珂俊", "age": 24, "date": "1998-10-1" },
            { "name": "吉涛涛", "age": 19, "date": "2003-9-25" },
            { "name": "张相渊", "age": 20, "date": "2002-4-5" },
            { "name": "朱顺杰", "age": 15, "date": "2007-3-15" },
            { "name": "胡兴伟", "age": 15, "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);
  • 根据对象中的日期排序 日期排序是根据时间戳进行排序

 var arr = [
            { "name": "高珂俊", "age": 24, "date": "1998-10-1" },
            { "name": "吉涛涛", "age": 19, "date": "2003-9-25" },
            { "name": "张相渊", "age": 20, "date": "2002-4-5" },
            { "name": "朱顺杰", "age": 15, "date": "2007-3-15" },
            { "name": "胡兴伟", "age": 15, "date": "2007-3-15" }
        ]
        arr.sort(function (a, b) {
            // new Date(日期) 会自动进行隐式转换  转成时间戳的形式
            // return new Date(a.date) - new Date(b.date)
            // Date.parse(字符串日期)  将字符串格式的日期转换成时间戳
            return Date.parse(a.date) - Date.parse(b.date)
        })
        console.log(arr);
  • 根据对象中的中文排序

// 5.根据对象中的中文排序 
        var arr = [
            { "name": "高珂俊", "age": 24, "date": "1998-10-1" },
            { "name": "吉涛涛", "age": 19, "date": "2003-9-25" },
            { "name": "张相渊", "age": 20, "date": "2002-4-5" },
            { "name": "朱顺杰", "age": 15, "date": "2007-3-15" },
            { "name": "胡兴伟", "age": 15, "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)
  • 随机排序

// 6.随机排序  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);

2.3数组的迭代方法

- 循环:for while do-while
- 遍历:for-in
- 迭代:every some filter forEach map

every

  • 语法:数组:every(function(item,index,array){ item是当前元素 index当前元素下标 array是当前操作的数组 })

  • 作用:对数组元素进行判断 当所有的判断结果为true的时候 才会返回true

 // 1.every:对数组元素进行判断 当所有的判断结果为true的时候  才会返回true
        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

some

  • 语法:数组:some(function(item,index,array){ item是当前元素 index当前元素下标 array是当前操作的数组 })

  • 作用:.some:对数组元素进行判断 只要有一个为true 结果就为true

 // 2.some:对数组元素进行判断  只要有一个为true 结果就为true
        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

filter

  • 语法:数组:filter(function(item,index,array){ item是当前元素 index当前元素下标 array是当前操作的数组 })

  • 作用:filter(筛选):对数组元素进行判断 结果为true的元素会组成一个新的数组进行返回

 // 3.filter(筛选):对数组元素进行判断 结果为true的元素会组成一个新的数组进行返回
        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]

map

  • 语法:数组:map(function(item,index,array){ item是当前元素 index当前元素下标 array是当前操作的数组 })

  • 作用:map:遍历数组 有返回值 返回值会组成一个新的数组进行返回

 // 4.map:遍历数组 有返回值  返回值会组成一个新的数组进行返回
        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]

forEach

  • 语法:数组:forEach(function(item,index,array){ item是当前元素 index当前元素下标 array是当前操作的数组 })

  • 作用:forEach:遍历数组 没有返回值

// 5.forEach:遍历数组  没有返回值
        var arr = [50, 70, 20, 10];
        arr.forEach(function (item, index) {
            console.log(item, index);
        })

3.正则对象

  • 正则对象:RegExp

  • 概念:提前定义好的 用于检索字符串的逻辑表达式(正则表达式)

  • 作用:验证字符串是否满足条件(多用于注册 登录界面) 验证手机号 /^1[3-9]\d{9}$/

3.1创建正则对象

  • 字面量创建

  // 1.字面量创建   /正则表达式/修饰符   \d 0-9  [0-9] 
        var reg1 = /[0-9]/gi;
        console.log(reg1);
  • 使用new关键字创建

// 2.使用new关键字创建 new RegExp(正则表达式,修饰符)
        var reg2 = new RegExp("[0-9]", "gi")
        console.log(reg2);
  • 两者的区别

 // 3.字面量创建和new关键字创建有什么区别
        //字面量创建的正则表达式中  没有变量的概念
        var a = "[0-9]"
        var reg3 = /a/gi;
        console.log(reg3);//a/gi
        //new关键字创建的  是可以识别变量
        var b = "[0-9]"
        var reg4 = new RegExp(b, "gi");
        console.log(reg4);///[0-9]/gi

3.2修饰符

  • g :global(全局):执行一个全局的匹配

// 1.g  global(全局):执行一个全局的匹配
        var str = "0823web0823b0823web";
        // 需求:将所有的web都替换成java
        var reg = /web/g;//正则表达式
        var newStr = str.replace(reg, "java");
        console.log(newStr);//0823java0823b0823java
  • i:ignore case 执行一个不区分大小写的匹配

 // 2.i ignore case 执行一个不区分大小写的匹配
        var str = "she is girl,SHE is girl,he is girl";
        //需求:将she替换成this
        var reg = /she/gi;
        var newStr = str.replace(reg, "this");
        console.log(newStr);//this is girl,this is girl,he is girl

3.3检索方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值