JavaScript(十一)

编程入门 行业动态 更新时间:2024-10-09 14:19:14

<a href=https://www.elefans.com/category/jswz/34/1771426.html style=JavaScript(十一)"/>

JavaScript(十一)

1.数组对象

1.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[j];arr[j] = arr[j+1];arr[j+1] = temp;} }
}

选择排序

  • 选择排序思路

    • 当前这个元素 和后面所有的元素依次比较 如果后面的值比钱前面的值小 就交换位置

 <script>var arr = [6, 3, 9, 2, 7, 1,10,0,12];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;}}}console.log(arr);</script>

sort排序

注意:如果是相同排序 就根据原有数组的结构顺序显示==

  • 基础使用

 // 1.sort() 是数组自带的方法   数组.sort()// 基础使用   不带参数  默认排序是根据ASCII码进行排序的  "0"---48var arr = [6, 3, 9, 2, 7, 1,10,0,12];console.log(arr);// arr.sort(); // console.log(arr);//  带参数  按照number类型比较      sort(function(a,b){ }) // a和b是相邻的两个数据arr.sort(function(a,b){console.log(a,b);// a是后一个数  b是一个数// return a - b //从小到大return b - a //从大到和})console.log(arr);
  •  对象排序
 // 2.对象排序  根据对象的age排序 l y g dvar arr1 = [{"name":"李三","age":15,"date":"2006-4-1"},{"name":"杨思","age":12,"date":"2009-4-1"},{"name":"郭郭","age":17,"date":"2010-4-1"},{"name":"迪丽热巴","age":19,"date":"2003-4-1"}] arr1.sort(function(a,b){// 获取对象中的属性值  对象名.属性名return a.age - b.age  //根据age 从小到大})
  •  日期排序
 // 3.日期排序  console.log( Date.parse("2022-10-1") );//1664553600000 创建字符串未来时间并且转换时间戳(毫秒单位 1970年1月1日到2022年10月1日的毫秒单位)console.log( new Date("2022-10-1") - new Date("2020-10-1")  );// 隐式转换arr1.sort(function(a,b){// return  Date.parse( a.date ) - Date.parse( b.date )return new Date(a.date) - new Date(b.date);})console.log(arr1);
  •  中文排序
// 4.根据中文排序  a-z// 李三 l    杨思 y   郭郭 g  迪丽热巴 d   迪丽热巴 郭郭 李三 杨思arr1.sort(function(a,b){// localeCompare // return a.name.localeCompare(b.name);//将中文转换拼音 根据拼音首字母按照a-z排序return b.name.localeCompare(a.name);//将中文转换拼音  根据拼音首字符按照z-a排序})console.log(arr1)
  •  随机排序
// 5.随机排序var arr2 = [1,2,3,4,5,6];arr2.sort(function(a,b){return Math.random() - 0.5;//通过随机产生0-1的数  然后判断是否大于0.5})console.log(arr2);

1.2数组的迭代方法

IE低版本不支持迭代方法

  • 以前学的数组方法

    • 循环 for while do-while

    • 遍历 for-in

    • 迭代 every some forEach map filter

  • every

    • 语法:arr.every(function(数组元素,下标,当前数组){ })

    • 作用:对数组元素进行判断 所有的判断都为true的之后 结果返回true

 // 1.everyvar arr = [80,60,100,45,99,10]; // true true true false true false// 判断所有成绩是否都大于60分var res =  arr.every(function(item,index){ // item数组元素(80 60 100 45 99 10)  index下标(0,1,2,3,4,5)console.log(item,index)return item >=60})console.log(res);
  • some
    • 语法:arr.some(function(数组元素,下标,当前数组){})

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

// 2.some  只要有一个判断条件为true  结果就为true// 考试成绩中有没有考到100分的var arr1 =  [80,60,100,45,99,10];// false false true false false falsevar res =  arr1.some(function(item,index){ // item数组元素  index下标return item==100})
  • filter
    • 语法:arr.filter(function(数组元素,下标,当前数组){})

    • 作用:对数组元素进行判断 将满足条件的元素组成一个新的数组返回

 // 3.filter 对数组元素进行判断  将满足条件的元素组成一个新的数组返回// 将成绩大于60的全部筛选出来var arr2 = [80,60,100,45,99,10];var res =  arr2.filter(function(item,index){return item>=60})console.log(res);
  • forEach
    • 语法:arr.forEach(function(数组元素,下标,当前数组){})

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

 // 4.forEach 遍历数组  没有返回值// 将所有的成绩-5var arr3 = [80,60,100,45,99,10];var res =  arr3.forEach(function(item,index){//item数组元素  index下标console.log(item,index);arr3[index] = item-5})console.log(arr3)
  • map
    • 语法:arr.map(function(数组元素,下标,当前数组){})

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

       // 5.map  遍历数组  有返回值var arr4 = [80,60,100,45,99,10];var res =  arr4.map(function(item,index){// + 5return item+5})console.log(res,arr4);

2.正则对象

  • 正则对象:RegExp对象

  • 概念:提前定义好的,用于检测字符串的逻辑表达公式,这个逻辑表达式就叫正则表达式

  • 作用:验证码字符串是否满足条件

2.1创建正则对象

  • 字面量创建

  // 1.使用字面量创建  /检测公式/修饰符var reg = /1[3-9][0-9]{9}/gi
  •  使用new关键字创建
 // 2.使用new关键字创建 new RegExp(检索公式,修饰符)var reg1 = new RegExp("1[3-9][0-9]{9}", "gi")    
  •  区别
 // 2.两者有什么区别var w = "web";var reg2 = /w/;//字面量创建的正则 没有变量的概念console.log(reg2)var w = "java"var reg3 = new RegExp(w);//new关键字创建  可以使用变量console.log(reg3)

2.2修饰符

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

        // g  全局匹配  0-9的数字用*代替var str = "web0711web0711";var reg1 = /\d/g; // "\d" 匹配0-9的数字// replcevar newSatr =  str.replace(reg1,"*");// 将str字符串中的数字都替换成*console.log(newStr);
  •  i ignore case 执行一个不区分大小写的匹配
        // i  不区分大小写  将web替换成javavar str = "web0711Web0711web0711web0711";var reg2 = /web/gi;var newStr =    str.replace(reg2,"java");console.log(newStr);

2.3检索方法

2.3.1字符串的检索方法

  • 字符串中有4个方法 是可以直接写正则表达式的

    • replace split match search

  • replace

    // str.replace(要查询的内容,要替换的内容)var str = "web0711ui0711java0711"; //将0711 替换成 0722var newStr =  str.replace(/0711/g,"0722");console.log(newStr);//web0722ui0722java0722 
  •  split
// str.split(分割标识)  将字符串根据分割标识分割成数组var str = "q1w2e3r4t5y6a";// 将字母挑选出来 并且组成一个新的数组var newStr = str.split(/\d/);// 字符串的分割标识只要是0-9的数字即可console.log(newStr);// ['q', 'w', 'e', 'r', 't', 'y', 'a']   
  •  match
  //match str.match() 挑选满足条件的内容组成一个新的数组返回 var str = "q1w2e3r4t5y6a"; // 将所有的数字挑选出来 并且组成一个新的数组var newStr = str.match(/\d/g);console.log(newStr);//['1', '2', '3', '4', '5', '6']     
  •  search
       // search  str.search   和indexof的作用一样  var str = "9q1w2e3r4t5y6a"; // var str = "abcdefg";var index =   str.search(/\d/);//查找str中首次出现数字的位置console.log(index);//-1// indexof和search的作用是一致的  但是有区别 search可以使用正则 indexof不能使用var index = str.indexOf(/\d/);console.log(index);// -1  无法识别正则表达式
  • 2.3.2正则对象的检索方法
  • test

    • 语法:正则表达式.test(检测的内容)

    • 作用:满足正则条件返回true 不满足则是返回false 正则表达式.test(检测的内容)

 // 正则的检索方法   test   exec// test 满足正则条件返回true 不满足则是返回false   正则表达式.test(检测的内容)var str = "27823456789";var reg = /^1[3-9][0-9]{9}$/;// 检测手机号 以1开头 第二位是3-9的数  必须是11位console.log(reg.test(str));//false
  • exec
    • 语法:正则表达式.exec(检索内容)

    • 作用: 检索字符串 检测通过返回检测内容(数组格式) 检测不通过返回null

    • 注意

      • 不加g 默认每次都是从下标为0的位置开始检测

      • 加上g 从上一次查找的位置往后开始查找

 //exec 检索字符串 检测通过返回检测内容(数组格式) 检测不通过返回null// 正则表达式.exec(检索内容)// 不加g    默认每次都是从下标为0的位置开始检测// 加上g    从上一次查找的位置往后开始查找var str = "q1w2e3r4t5y6a";var reg = /\d/g;//检索数字var a = reg.exec(str);//一次只能检索一个console.log(a);//1var a = reg.exec(str);//一次只能检索一个console.log(a);//2var a = reg.exec(str);//一次只能检索一个console.log(a);//3var a = reg.exec(str);//一次只能检索一个console.log(a);//4var a = reg.exec(str);//一次只能检索一个console.log(a);//5var a = reg.exec(str);//一次只能检索一个console.log(a);//6var a = reg.exec(str);//一次只能检索一个console.log(a);//null

2.4正则元字符

正则元字符:在正则表达式中有些特定的符号有特定功能

  • . 匹配出换行符之外的任意内容

// \n换行符 \t空格符   exec 返回检测的内容 检测不到返回nullvar str = "你好\n你好\t你好";//1    .匹配出换行符之外的任意内容var reg = /./g; //全局匹配出换行符之外的任意内容var a = reg.exec(str);console.log(a);//你var a = reg.exec(str);console.log(a);//好var a = reg.exec(str);console.log(a);//你
  •  [字符集] 匹配字符集中的任意字符
 // 2  [字符集] 匹配字符集中的任意字符var str = "web0711web0711";// var reg = /[a-z]/g;// 匹配a-z中的任意一个字符var reg = /[a-z0-9]/g;// 匹配a-z或者是0-9之间的任意字符var a = reg.exec(str);console.log(a);//w var a = reg.exec(str);console.log(a);//evar a = reg.exec(str);console.log(a);//bvar a = reg.exec(str);console.log(a);//0var str = "1234567";//验证邮箱  邮箱中都包含@var reg = /[@.]/ //验证字符串中是否包含@或者.var a = reg.exec(str);console.log(a);//null
  •  [^字符集] 匹配非字符集中的任意字符
 // 3.[^字符集] 匹配非字符集中的任意字符var str = "12@34567";var reg = /[^@.]/g;// 匹配非@或者.的内容console.log(reg.exec(str));//1console.log(reg.exec(str));//2console.log(reg.exec(str));//3
  •  \d 匹配数组 \D 匹配非数字
 // 4  \d 匹配数组  \D 匹配非数字var str = "q1w@2e3r4t5";var reg = /\d/g;// 匹配数字console.log(reg.exec(str));//1console.log(reg.exec(str));//2var reg = /\D/g;// 匹配非数字console.log(reg.exec(str));//qconsole.log(reg.exec(str));//wconsole.log(reg.exec(str));//@
  •  \w 匹配数字 字母 下划线 \W 匹配非数字 非字母 非下划线
 // 5 \w 匹配数字 字母 下划线    \W 匹配非数字 非字母 非下划线var str = "q1w@2e3r_4t5";var reg = /\w/g;console.log(reg.exec(str));//qconsole.log(reg.exec(str));//1console.log(reg.exec(str));//wconsole.log(reg.exec(str));//2var reg = /\W/g;console.log(reg.exec(str));//@console.log(reg.exec(str));//null
  •  \s 匹配空格 \S匹配非空格
 // 6 \s 匹配空格    \S匹配非空格var str = "q1 w@2e3r_4t 5";var reg = /\s/g;console.log(reg.exec(str)); // " "console.log(reg.exec(str)); // " "var reg = /\S/g;console.log(reg.exec(str));//qconsole.log(reg.exec(str));//1console.log(reg.exec(str));//w
  •  ^a 必须以a开头 a$ 必须以a结尾
 // 7 ^a 必须以a开头   a$  必须以a结尾   严格模式var str = "178098765430";// 12位数  var reg = /^1[3-9]\d{9}$/;console.log(reg.test(str)); //false 
  •  a{m,n} 匹配a的位数 至少是m位 最多n位
 // 8 a{m,n}  匹配a的位数   至少是m位  最多n位var str = "123456";var reg = /^\d{2,3}$/;// 匹配数字最少2位 最多3位  console.log(reg.test(str));//false
  •  a{m} 匹配a的位数 至少m位 最多m位
        // 9 a{m}   匹配a的位数  至少m位 最多m位var str = "123456";var reg = /^\d{6}$/;// 匹配6位数字console.log(reg.test(str));//true
  •  a{m,} 匹配a的位数 至少m位
 // 10 a{m,} 匹配a的位数  至少m位 var str = "1";var reg = /^\d{2,}$/;// 匹配数字至少2位console.log(reg.test(str));//true

更多推荐

JavaScript(十一)

本文发布于:2024-02-12 20:45:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1689337.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:JavaScript

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!