JS高级知识整理-数组&String

js高级复习

一、数据类型

1.Number
2.String
3.Boolean
4.Null
5.Undefined

二、数组

数组类型

1.关联数组 :以数字为下标,如arr[0]

2.索引数组: 以非数字为下标,如字符串 arr.index

三、数组API

转字符串

1、String(arr): 将arr中每个元素转为字符串,用逗号相连

2、arr.join(“连接符”)

 arr.join("") // 无缝拼接
 arr.join("")==="" // 可判断空数组
拼接和选取

强调:拼接和选取都无权修改原数组,只能返回新数组,必须用变量接住返回值

拼接
var newArr = arr1.concat(1,值2,arr2) // 将值1,值2,arr2中的每个元素,拼接到arr1结尾

注:可打散数组类型参数

选取
  1. 负参数:倒数第n个,自动执行length-n
  2. 省略第二个参数:从start一直选取到结尾
  3. 省略全部两个参数:复制整个数组
修改数组
删除元素
  1. arr.splice(start,n) //删除arr中start位置开始的n个元素
  2. 支持负数参数,表示倒数第n个
  3. 返回被删除的元素组成的临时数组

强调:直接修改原数组

插入元素
arr.splice(start,0,1,2,..)

强调:如果插入子数组,会变成二维数组

替换
 arr.splice(start,n,1,2,...)  //先删除arr中start位置的n个元素,再在start位置插入新元素

强调:删除元素个数不一定和插入元素个数一致

扩展用法- 广告轮播
imgs = imgs.concat(imgs.splice(0,n))  //移除开头的n个元素拼接到结尾
imgs = imgs.splice(-n).concat(imgs)  //移除结尾的n个元素拼接到开头
翻转
arr.reverse()  //翻转数组头尾顺序
排序

手写排序

冒泡,快速插入,依次比较相邻两数,如果前数>后数,就交换位置

for(var r=1;r<arr.length;r++){
    for(var i=0;i<arr.length-r;i++){
        if(arr[i]>arr[i+1]){
           arr[i]=[arr[i+1],arr[i+1]=arr[i]][0];
        }
    }
}

API排序

arr.sort()  //将arr中每个元素转为字符串,再按字符串升序排列

问题:只能按字符串升序排列

自定义比较器:比较两个值大小的函数

  1. 两个参数a,b
  2. 返回值:- a>b,返回正数 - a<b,返回负数 - a==b,返回0
  3. function compare(a,b){return a-b;}
  4. 将比较器函数作为对象传入sort方法:arr.sort(compare)
  5. 降序:颠倒比较器函数返回值正负号

String

什么是: 多个字符组成的只读字符数组

vs数组:

  1. 相同
    a. 下标
    b. .length
    c. for遍历
    d. slice()

  2. 不同: 两者类型不同,API不通用

强调:所有String API都无权修改原字符串,只能返回新字符串

String API
大小写转换
  1. str.toUpperCase() //转大写
  2. str.toLowerCase() //转小写
获取指定位置字符

var char = str.charAt(i) //省略i,默认为0

选取子字符串
  1. var subStr = str.slice(starti,endi+1) // 同数组的slice
  2. str.substring(starti,endi+1) //不支持负数参数
  3. str.substring(starti,starti+n)
查找关键词
  1. 查找一个固定的关键词出现位置
var i = str.indexOf("关键词",fromi) //在str中从fromi位置查找下一个关键词的位置
// 返回值:
// 找到,返回关键词所在位置
// 找不到:返回-1
// 优点:可以指定开始位置,可以找所有
// 缺点:不支持正则,一次只能找一种关键词
  1. 判断是否包含符合规则的关键词
var i=str.search(/正则表达式/i)
// 返回值:
// 如果返回-1,说明不包含,如果返回不是-1,说明包含。永远只找第一个关键词的位置
// 优点:支持正则
// 缺点:
// 		1) 不能设置开始查找位置,只能找第一个,不能找所有。
//		2) 只能返回位置,不能返回关键词内容
//		3) 不支持g
  1. 获取所有关键词的内容
var kwards=str.match(/正则表达式/ig)
// 返回包含所有关键词的数组,如果没找到,返回null
// 优点:获得所有关键词的内容
// 缺点:无法返回每个关键词的位置
  1. 即获得每个关键词的内容,又获得每个关键词的位置
regexp.exec(str)
替换
简单替换
  1. 将所有关键词都替换为统一的新值
  2. str=str.replace(/正则表达式/ig,“替换值”)
  3. 问题: 无法根据不同的关键词,选择不同的值替换
高级替换
根据每个关键词的不同,动态返回不同的替换值
	str=str.replace(/正则表达式/ig,function(kw,$1,$2,...){
    //kw: 会自动获得本次找到的完整关键词
    //$n: 会自动获得本次找到的关键词中第n个分组的子内容 
    	return 根据不同kw,返回不同替换值
    })

衍生

删除: 替换为空字符串

格式化:

  1. 用正则对原始字符串分组,var reg=/(\d{4})(\d{2})(\d{2})/
  2. 正则中每个分组都会自动获得一个分组序号,从1开始
  3. 在replace的替换值中使用$n,重新拼接新的格式 birth.replace(reg,"$1年$2月$3日")

切割

简单切割: var subs=str.split(“分隔符”) //多段子字符串组成的数组,切割后的结果中不包含分隔符

复杂切割: var subs=str.split(/正则表达式/) //多段子字符串组成的数组,切割后的结果中不包含分隔符

扩展: var chars=str.split("") //将字符串打散为字符数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值