数组方法、字符串方法和正则方法

数组的常用方法

改变原数组的有:push pop unshift shift reverse splice

  1. push 该方法用于向数组的末尾增加一项
    参数是数组的新成员
    返回值 是数组的长度

  2. pop 该方法用于从数组的末尾移除一项 并返回该项

3.unshift 该方法用于往数组的头部增加一项 并返回数组的长度

  1. shift 该方法用于从数组的头部移除一项 并返回该项

  2. concat 连接 该方法的作用是给数组连接新成员
    参数有任意个,都是会被拼接到新数组中的成员 如果参数中有数组 会把这个数组拆开`,返回值是连接完毕的新数组,它不会改变原来的数组
    var arr = [1];
    var arr1 = [2, 3];
    // 把arr 和 arr1 连接起来
    var arr2 = arr.concat(10,11,arr1);
    console.log(arr2);//[1,10,11,2,3]必须有arr
    console.log(arr);//[1]

6.reverse 将一个数组逆序
返回值是原数组
也会影响到原数组
var arr = [“a”, “b”, “c”, “d”, “e”];
var arr1 = arr.reverse();
console.log(arr);//[“e”,“d”,“c”,“b”,“a”]
console.log(arr1);//[“e”,“d”,“c”,“b”,“a”]
console.log(arr === arr1);//true
7.sort方法 该方法只适用于内部成员都是数字的情况
var arr = [1, 11, 44, 4, 5, 67, 6, 78, 345, 89, 8];
(a) 如果不传递参数 会按照第一位数的数字从小到大排序
arr.sort();
console.log(arr);[1,11,345,4,44…]
(b) 如果传递参数 参数是一个函数 该函数有两个参数 a b
如果返回a - b 则升序排列 如果返回b - a则降
arr.sort(function(a, b) {
return b - a;
});
console.log(arr);[345,89,78…]

  1. join方法 该方法用于将数组以参数作为间隔转换成字符串
    参数默认是 “,”
    var arr = [1, 2, 3, 4, 5, 6, 7, 8];
    console.log(arr.join(“☆”));//1☆2☆3☆4☆…

9.slice(start, end) 该方法用于截取一段数组中的成员
start: 开始截取的下标位置
end: 结束截取的下标位置(不包含)
左闭右开:包含左侧 不包含右侧
可以接收一个参数 表示从start截取到最后
可以不接收参数 表示全部截取
参数可以是负数 表示从后往前数(负数是从-1开始)
如果第一个参数比第二个参数要大 截取的是空数组[]
var arr = [1, 2, 3, 4, 5, 6, 7, 8];
var arr1 = arr.slice(2, 6); // [3, 4, 5, 6]
var arr2 = arr.slice(2); // [3, 4, 5, 6, 7, 8]
var arr3 = arr.slice(); // [1, 2, 3, 4, 5, 6, 7, 8]
var arr4 = arr.slice(0, -1); // [1, 2, 3, 4, 5, 6, 7];
var arr5 = arr.slice(-4, -1); // [5, 6, 7]
var arr6 = arr.slice(-4); // [5, 6, 7, 8]

  1. splice(pos, num, …) 该方法用于操作数组
    pos: 表示操作数组的位置
    num: 表示要删除几项
    之后的每一个成员表示要向pos位置插入的成员
    返回值是要删除的几项

将3移除

    var result = arr.splice(2, 1);
    console.log(arr);
    console.log(result);

将3替换成9

    var result = arr.splice(2, 2, 9);
    console.log(arr);
    console.log(result);     

在5前面插入5个1

    var result = arr.splice(4, 0, 1, 1, 1, 1, 1);
    console.log(arr);
    console.log(result);

####当都只传递1个参数时 默认从该位置往后都移除
var result = arr.splice(1);
console.log(arr);
console.log(result);

ES5的数组方法

forEach map some every filter
参数是一个函数 函数有3个参数
第一个参数是数组成员
第二个参数是数组成员的索引值
第三个参数是数组本身
1.forEach 用于循环, 该函数会执行数组.length次
该方法没有返回值
例如:
var re = arr.forEach(function(value, index, self) {
console.log(value, index, self);
return;
});
console.log(re);//undefined

2.map 用于循环,该函数会执行数组.length次
map方法的返回值是一个新数组 数组长度与原数组保持一致
数组的成员是参数函数的返回值
var arr = [10, 20, 30, 40, 50];
var arr1 = arr.map(function(value, index, self) {
return value* 1.3;
});
console.log(arr1);//[13, 26, 39, 52, 65]

  1. fill 用于填充数组 接收3个参数
    第一个参数是 填充的数
    第二个参数是 填充的起始位置(可选)
    第三个参数是 填充的结束位置(可选)
    var arr = [1, 2, 3, 4, 5, 6];
    将数组的每一个成员都填充为0
    arr.fill(0); //[0,0,0,0,0,0,]
    将数组的从第二个开始往后都填充为0
    arr.fill(0, 1);//[1,0,0,0,0,0]
    将数组的从第二个开始到第四个填充为0
    arr.fill(0, 1, 4);//[1,0,0,0,5,6]
    ==原数组改变 ==
    4.some 该方法属于断言方法 用于判定数组中是否有存在符合某种条件的成员
    函数要有返回值 通常是符合某种条件的判定表达式
    返回值是一个布尔值 只要有任何一个成员符合了函数的描述 就返回真
    都不符合才返回假
    var arr = [1, 2, 3, 4, 5, 6, 7, 8];
    var result = arr.some(function(value, index, self) {
    return typeof value === “string”;
    });
    console.log(result);

  2. every 该方法也是断言方法 用于判定数组中是否有存在符合某种条件的成员
    函数要有返回值 通常是符合某种条件的判定表达式
    返回值是一个布尔值 只要有任何一个成员不符合函数的描述 就返回假 都符合才返回真
    var arr = [1, 2, 3, 4, 5, 6, 7];
    var result = arr.every(function(value, index, self) {
    return typeof value === “number”;
    });
    console.log(result);

6.indexOf 用于查找数组中是否存在某一个成员
如果找得到就返回该成员的下标 如果找不到就返回 -1
第一个参数是要查找的成员
第二个参数是要查找的起始位置
*indexOf方法比较时使用的是全等判定===,
var arr = [1, 2, 3, 4, 5, 6, 7, 8];
var index = arr.indexOf(5, 4);
console.log(index);//4

var arr1 = [];
var arr = [1, undefined, null, "str", arr1,[], {}, function() {}];
    var result = arr.indexOf([]);
    var result = arr.indexOf(arr1);//4
    console.log(result);

1,undefined,null,"str"都可以判断,[],{},function(){}都是引用类型,indexof({})相当于开辟一个新地址,与原来不一样,-1

  1. filter 该方法用于过滤
    返回值是符合参数函数条件表达式的成员组成的[数组]
    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    var arr1 = arr.filter(function(value, index, self) {
    return value % 2 === 0;
    });
    console.log(arr1);//[2,4,6,8,10]

ES6的数组方法

  • Array.of 用于定义数组 参数都是成员
    var arr = Array.of(5);
    var arr1 = new Array(5);
    console.log(arr);//[empty × 5]
    console.log(arr1);//[5] arr1.length==1

  • Array.from 用于将类数组对象转为数组
    var lis = document.getElementsByTagName(“li”);
    ES6之前的转换方式: [].slice.call(lis)
    var arr = Array.from(lis);

  • find 用于查询数组中的成员 接收一个函数作为参数
    该函数返回一个条件表达式
    返回符合函数条件表达式描述的第一个数组成员 如果找不到 返回undefined
    var arr = [“张三”, “李四”, “王五”, “赵六”, “田七”];
    var username = arr.find(function(value, index, self){
    return value.indexOf(“五”) != -1;
    });
    console.log(username);//王五

  • findIndex 用于查询数组中的成员的索引 接收一个函数作为参数
    该函数返回一个条件表达式
    返回符合函数条件表达式描述的第一个数组成员的索引
    如果找不到 返回 -1
    var arr = [“张三”, “李四”, “王五”, “赵六”, “田七”];
    var usernameIndex = arr.findIndex(function(value,index,self){
    return value.indexOf(“五”) != -1;
    });
    console.log(usernameIndex)//2

  • copyWithin 负责数组的内部复制
    接收三个参数
    第一个表示操作位置
    第二个表示复制的开始位置(包含)
    第三个表示复制的结束位置(不包含)
    操作结果: 从第二个参数开始复制到第三个参数 再将复制的成员 从第一个参数位置开始替换
    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    arr.copyWithin(4, 5, 7);
    console.log(arr);//[1,2,3,4,6,7,7,8,9]

字符串的一些常用方法

任何字符串方法不会改变原字符串
  1. charAt 返回指定下标位置的字符。如果index不在0-str.length(不包含str.length)之间,返回空字符串。
    var str = “abcdefg”;
    var s = str.charAt(5); // 下标为5的字符
    console.log(s);

  2. charCodeAt 返回指定下标位置的字符的unicode编码,这个返回值是 0 - 65535 之间的整数
    var str = “abcde子啊g”;
    var s = str.charCodeAt(5); // 下标为5的字符的unicdoe码
    console.log(s);
    注意:如果index不在0-str.length(不包含str.length)之间,返回NaN。

  3. concat
    var str = “abc”;
    var str1 = str.concat(“a”,“b”,“c”,“dsd”);//abcabcdsd

  4. slice 前一个数要小于后一个数,否则返回空字符串
    var str = “abcdefghijklm”;
    var str1 = str.slice(1, -9);
    console.log(str1);//bcd

  5. split 方法用于把一个字符串分割成字符串数组。
    var str=“AA BB CC DD”;
    var string1=“1:2:3:4:5”;
    var str1=str.split("");//如果把空字符串 ("")用作分割符,那么字符串的每个符之间都会被分割
    var str2=str.split(" “); //以空格为分隔符
    var str3=str.split(”",4); //4指定返回数组的最大长度
    var str4=string1.split("?;
    console.log(str1); // [“A”, “A”, " ", “B”, “B”, " ", “C”, “C”, " ", “D”, “D”]
    console.log(str2); //[“AA” “BB” “CC” “DD”]
    console.log(str3); //[“A”, “A”, " ", “B”]
    console.log(str4); // [“1”, “2”, “3”, “4”, “5”]

6.substring 用于提取字符串中介于两个指定下标之间的符,
var str = “abcdefghijklm”;
var str1 = str.substring(1, 4);//bcd
var str2 = str.substring(4, 1);//bcd 交换
var str3 = str.substring(-2, 2);//ab
var str4 = str.substring(2,-4);//ab
console.log(str1);
注意:substring()用法与slice()一样,但不接受负值的参数。
7. substr 在字符串中抽取从 start 下标开始的指定数目的字符。
var str = “abcdefghijklm”;
var str1 = str.substr(1, 6);//bcdefg从"1"开始,6个数
console.log(str1);

8.indexOf 查找字符串,有,返回第一个字符下标,没有,-1
var str = “abcdefabcjklm”;
var a = str.indexOf(“def”);//3
var c = str.indexOf(“abc” ,3);//从3开始匹配 6
var b = str.indexOf(“dddd”);//-1
console.log©;

  1. replace
    var str = “今天天气好好”;
    var str1 = str.replace(“天天”,"");//今气好好,必须用字符串
    console.log(str);
    console.log(str1);

  2. match 匹配 返回所有查找的关键字内容的数组。
    var str = “今天天气好好”;
    var result = str.match(“天天”);//[“天天”, index: 1, input: “今天天气好好”, groups: undefined]

    var result1 = str.match("天1天");//null
    console.log(result1);
    
  3. search 查找 有,返回第一个字符下标,没有,-1
    var str = “今天天气天天好好”;
    var result = str.search(“天气”);//2
    console.log(result);

  4. toUpperCase
    var str = “aAbBcCdD”;
    console.log(str.toUpperCase());//AABBCCDD

  5. toLowerCase
    console.log(str.toLowerCase());//aabbccdd

  6. lastIndexOf(): 返回某个指定的子字符串在字符串中最后出现的位置。
    注意:lastIndexOf()方法对大小写敏感,如果子字符串没有找到,返回-1。第二个参数表示从哪个下标

开始查找,没有写则默认从最后一个字符处开始查找。
var str=“Hello World”;
var str1=str.lastIndexOf(“o”);
var str2=str.lastIndexOf(“world”);
var str3=str.lastIndexOf(“o”,str1-1);
console.log(str1); //7
console.log(str2); //-1
console.log(str3); //4
15. trim() 该方法会创建一个字符串的副本,并删除前后的空格,对原来的字符没有影响

ES6 字符串的方法

1.codePointAt() 能够正确处理4个字节储存的字符,返回指定索引出一个字符的码点。
codePointAt方法是测试一个字符由两个字节还是由四个字节组成的最简单方法。
var s='a';s.codePointAt(0) // 134071 s.codePointAt(1) // 57271
  codePointAt方法返回的是码点的十进制值,如果想要十六进制的值,可以使用toString方法转换一下。
for…of字符串的遍历器接口
for (let codePoint of 'foo') {
console.log(codePoint);
}//"f" "o" "o"
padStart(),padEnd()字符串补全长度的功能
padStart()用于头部补全
padEnd()用于尾部补全
padStart和padEnd一共接受两个参数,
第一个参数用来指定字符串的最小长度,
第二个参数是用来补全的字符串。
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'
如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串。
'xxx'.padStart(2, 'ab') // 'xxx'
'xxx'.padEnd(2, 'ab') // 'xxx'
如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串。
'abc'.padStart(10, '0123456789')
如果省略第二个参数,默认使用空格补全长度。
'x'.padStart(4) // '  x'
'x'.padEnd(4) // '
startsWith 判定一个字符串是否以另一个字符串开头
一个参数  从头检测
    var result = str.startsWith("hello");
    console.log(result);
    二个参数 从指定的位置检测
endsWith 判定一个字符串是否以另一个字符串结尾
var str = "hello world";
    检测尾部
    var result = str.endsWith("world");
    console.log(result);
    检测指定位置是否以指定字符结尾
    var result1 = str.endsWith("wo", 8);
    console.log(result1)//true
includes 检测是否包含指定字符串
    var result1 = str.includes("o", 7);
    console.log(result1);//true
repeat() 重复

正则方法

1 reg.test(str) 该方法用于测试字符串是否符合正则表达式的规则
参数是被测试的字符串
返回值是布尔值

var reg = /[^a-z]/; // 当^出现在[]中时 表示该[]中的任何一个都不能有
    var reg = /^a/;//只要任何一个字符里没有a 就行
    var reg = /^[^a]+$///从开始到结束都不能有a

2 reg.exec(str) 该方法用于执行正则表达式
参数是字符串
返回值
var str = “abcde”;
var reg = /\w/g;
console.log(reg.exec(str));
console.log(reg.exec(str));
如果有g修饰符 则每次匹配都会从上一次的结束位置开始新的匹配 如果没有则从头匹配

  1. 字符串中的match方法
    该方法的参数可以是字符串 可以是正则表达式
    如果是字符串则 且字符串在原字符串中,则返回一个数组 数组的唯一成员是匹配到的内容也就是参数

字符串
如果是字符串且无法匹配到 则返回null

    如果是正则表达式且没有g修饰符 表现与字符串一致
    如果是正则表达式且有g修饰符 则只返回匹配到的所有成员组成的数组 
    console.log(str.match(reg));
  1. 字符串中的search方法,永远从头开始search
    console.log(str.search(reg));

  2. 字符串的replace方法
    str.replace(arg1, arg2);
    arg1 替换下的内容
    可以是字符串
    可以是正则表达式
    arg2 替换上的内容
    可以是字符串
    可以是函数 函数的返回值会作为替换上的内容,
    函数的参数 第一个参数是整个正则表达式所匹配到的内容
    倒数第一个参数是原字符串 倒数第二个参数是匹配到的内容的第一个字符在原字符串中的下标位置 如果正则表达式中出现了() 则会对应的在第一个参数之后增加对应的形参
    字符串对象共有 4 个方法,可以使用正则表达式:match()、replace()、search()和split()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值