ES6扩展字符串和数组

裴心思
2023-12-01

新的方法出现时为了使功能更加完善和性能更加给力。

字符串原型上常用方法和新增方法:

charAt()方法   可返回指定位置的字符(包括空格)

String.prototype.charAt()
let str = 'asasa';
console.log(str.charAt(3)) //返回结果为s

charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。

方法 charCodeAt() 与 charAt() 方法执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的是字符子串。

let str = 'asasa';
console.log(str.charCodeAt(3))//返回结果为unicode编码中s对应的编码

slice(A,B)    表示从字符串的A位子开始,截取当前B的长度(光标定位在B截取不包括B).B可以不填,默认返回从A开始后面的

let str = 'asasa';
console.log(str.slice(2,3))//返回结果为a

indexOf(A,B)   索引查找。A表示需要查找字符串的子集或自己。B代表要查找的开始位子(优化查找),结果返回查找到的最开始位子索引值。(但是现实中我们想要的是判断字符串中有没有他返回结果是true或者false

let str = 'as asa';
console.log(str.indexOf('sa',2)) //返回结果为4

自己封装一个判断子串方法 

String.prototype.isInclude  = function (str){
    if(this.indexOf(str)!==-1){
        return true
    }else{
        return false
    }
}
console.log('1234'.isInclude('12')); //返回结果为true

 

split('A')   方法用于把一个字符串分割成字符串数组。参数A为分割的标准A可以不填写。常常和split一起使用的还有数组上的Array.join()方法(用于把数组中的所有元素放入一个字符串,不传参默认逗号分割)。

let str = '1,2,3,4,5,6,7,8';
console.log(str.split(',')) //返回结果为一个数组。数组的每位还是一个单独的字符串

toUpperCase()  把字符串中有小写字母变成大写,其他数字汉字不变。

let str = 'nihao 123 好';
console.log(str.toUpperCase()) //返回结果把小写字母变成大写,其他不变。

toLowerCase()  把字符串中有大写的转化成小写,其他不变

let str = 'NIHAO 123 好';
console.log(str.toLowerCase()) //返回结果把大写字母变成小写,其他不变。

新增方法:

includes(A,B)  判断子串A在不在字符串中,B代表从哪个位子开始判断。结果返回true或者false

let str = '12213';
console.log(str.includes('12'));//返回结果true

startsWith(A,B)和 endsWith(A.B) 分别表示从B位子开始(不写默认开头和结尾),起始位子(结束位子)是不是A这个子串(从以下代码可以看出直接传入数字会发生类型转换)(适用:前缀和后缀的筛选和分类)

let str = '12213';
console.log(str.startsWith(12),str.endsWith(12));

小应用:筛选.定义一个数组,里面存放着不同字符串,先利用数组的筛选方法,在筛选函数中添加筛选规则

let arr = ['bai-A', 'lu-A', 'bai-B', 'lu-B', 'bai-C', 'lu-C']
let myfilter = arr.filter(ele => ele.startsWith('bai') && ele.endsWith('B'))

筛选规则:筛选出数组中元素以‘bai’开头并且是‘B’结尾的元素。

repeat(A)  把当前子串重复A次

let a = 'a'.repeat(10)
//输出结果为'aaaaaaaaaa'

模板字符串:`${xxx}`(``反撇号)${}中可以放原始值和引用值(引用值会调用自身类型的toString方法),表达式和函数执行

let ele = 'bai';
let ele1 = 'lll';
let str = `${ele} love ${ele1}`;
let  obj = {
    name:'xxx',
    age:'18'
};
let arr= [1,2,3,4];
let str = `${obj} + ${arr}`;
//结果为"[object Object] + 1,2,3,4"

和常用的字符串拼接,有很大的便利性。字符串拼接插入dom结构时。常用方法需要加转义字符来保证换行语法正确。

在模板字符串中就有了很大的便利性。

let ele = 'bai';
let ele1 = 'lll';
let str = `<div>
                <div>
                    <p>${ele}</p>
                </div>
            </div>`;

es6 数组扩展:

数组的创建方式:字面量和构造函数:

构造函数:

var  arr = new Array(8)  //数字且只有一个参数的时候,创建一个长度为8的数组(每个值为空empty)
var  arr1 = new Array('8') //非数字创建,创建一个数组['8']
var  arr2 = new Array('8',1,2) //多个参数,创建多个参数的数组

对于es6版本前的构造函数创建,不够人性化和语义化。

所以在es6中引入了Array.of //增强版数组,统一返回由参数构成的数组。

var arr = Array.of(8) 
var arr1 = Array.of('8') 
var arr2 = Array.of('8', 1, 2) 

类数组转化成数组:为了方便使用数组的方法

Array.from()和扩展运算符

Array.from()将两类对象转换为真正的数组:类似数组的对象和可遍历的对象

let odiv = document.getElementsByTagName('div');
let obj = {
    0: 'a',
    1: 'b',
    2: 'c',
    length: 3
}
let arr = Array.from(obj) //数组本身方法
let arr1 = [...odiv]  //扩展运算符

查找:

indexOf(ele)//查找元素ele 找到返回相对应的索引值。找不到返回-1,(查找不到NaN,因为NaN自己不等于自己。)

find(fn)//模糊查找,找到返回函数中对应的结果。

findIndex(fn)  //精确查找。找到返回索引值。找不到返回-1

let arr = [1, 2, 3, NaN]
console.log(arr.indexOf(NaN)) //返回-1
console.log(arr.find(x => Object.is(x, NaN))) //有值返回对应的查找值
console.log(arr.findIndex(x => Object.is(x, NaN))) //有值,返回对应的索引

fill(value, start=0, end=length)  //作用,从数组的start位开始,到end结束。这其中的元素全部替换成value(只传value。默认从初始位置开始到结束位子,什么都不传,整个数组就会变成undefined)。一般做数组的初始化 。

深入学习:https://github.com/chanceLe/ES6-Basic-Syntax/blob/master/%5Bes6%5D-03-%E6%95%B0%E7%BB%84.html

 

 类似资料: