js-Array和String总结

文章详细介绍了JavaScript中字符串和数组的各种操作方法,包括ES6新增的功能,如`includes`,`startsWith`,`endsWith`,`repeat`,`padStart`等。同时,提到了字符串与数组的转换,遍历方法,以及如何判断数据类型。此外,文章还讨论了数组的改变原数组与不改变原数组的方法,如`push`,`pop`,`splice`等。
摘要由CSDN通过智能技术生成

关注返回值, 是否改变原数组,传参…

  1. String是引用数据类型,

  2. string 和 array 都能用但是注意

let str = 'abc';
str.indexOf('') // 0
includes('a', n)
startWith('a', n)
endWith('a', n)

都有的方法/属性

1. slice(index1, index2) 裁切 含头不含尾
2. indexOf(val, start) '' ''
3. includes('') //  ''.includes('')  true  开始觉得挺bug的, 后面觉得符合预期, 空集是任何集合的子集, 哪怕是空集
4. concat() 拼接, 返回拼接后的值, 但是String 通常不用 直接用 + 或者模板字符串了``
5. valueOf() 不知道有啥用
 

Array.isArray()判断数组

互转

str.split('').reverse().join('') // 字符串分割成数组=>逆序=>合成字符串
split('', 1) // 限制了数组长度
arr.toString()

// 字符串转数组, 过滤假值, 再映射(转数字)
let str = '1,2,3'
str.split(',').filter(i => i).map(i => +i) 

str = ''
str.split(',') // [ '' ];

改变原数组的8方法(其余的都是不改变原数组的)

const arr = ['a','b','c']
arr.push(1, 2) // 5 返回新的数组的长度...莫名其妙的
arr.pop() // 2 返回取出的这最后一项
arr.unshift('0') // 5 
arr.shift() // '0'

sort() // 排序
splice() // 粘接
reverse()
fill(value, start, end) // 

splice 删除,插入,替换

let arr = ['a', 'b', 'c'];
arr.splice('eee', 1) // 'a'
arr.splice(undefined, 1) // 'a'
arr.splice(false, 1) // 'a'
arr.splice(true, 1) // 'b'
arr.splice([0], 1) // 'a'
应该是会用Number() 转数字, 转不成就默认 0 

arr.splice(-1) // ['c']
arr.splice(1) // ['b', 'c']

类数组转数组

Array.prototype.solice.call(arguments) // 原理???
Array.from(arguments)

其他方法

Array.isArray(x) // 判断是否是数组
forEach() 遍历, 数组的这些遍历方法**不能通过break 中断. return 也会被忽略**
reduce()
some()
every()

前端是做什么的? 在合适的时机, 发合适的请求, 获取数据(处理数据),展示到合适的地方. string是常用的基本数据类型,可见很重要.

  1. 除了null和undefined都有toString方法
  2. '2019-09-08’日期格式的字符串可以直接比较大小. 返回布尔值

字符串模板

Unicode 表示法; U+2028…

原来没模板字符串要这样
var longString = 'Long '
  + 'long '
  + 'long '
  + 'string';
现在只要下面这样, 想换行就换行,想用表达式放${}里面
let  longString = `Long 
  	long
  	${表达式}
  	long
  	String
  	`

es6新增的string方法

1. includes 包含 (空串会返回0 , indexOf也是)
2. startWith endWith, 比如验证文件名. 'abc.pdf'.endsWith('.pdf', 1) 
3. <font color=orange>repeat(100) </font> 
4. padStart(10, 'a') 
5. replaceAll('b','-') 
6. at(1) // 0 -1

不知道为啥能用下标取了还搞个at?
let str = 'abc';
str[1]  // 'b'
str.at(1) // 'b'
str[3] // undefined
str.at(3) //undefined

es6 之前的string方法

toLowerCase()

const str = 'abc'
str.split('', length) // 拆成数组, length限制长度  join() join('') 可以接正则
String() // 强转字符串
str.slice(1, 3)  // 比 substring好 substring()传负值会转0 substr截取几个  substr(index, count)废弃了, 不要用

trim()
toLowerCase() // Upper toLocalLowerCase toLocalUpperCase  带了local的相对跟稳妥.
toUpperCase()
concat() 拼接, 不如 + 如果不是字符串会转 ''.concat(a, b, c)

charAt // 为啥不用index?
charCodeAt() // 获取ASCII码 
可搭配正则的()
split(//)也可以
'abc'.search('a') // 0  search()返回索引
match() //  用得最多匹配方法match() 相当于正则的exec()方法 返回一个数组, 
replace() //   replace(/a/g, 'b')  ???特殊的字符序列 $$ $& $` $' $n $nn, replace(//, function( match, pos, originalText) {})

replace

 let zml = `
	 <h1>zml</h1>
	 <span>张明乐</span>
	 <h2>33</h2>
 `
 // [\s\S] 代表所有字符 \1代表前面的 h[1-6]
 let reg = /<(h[1-6])>([\s\S]+)<\/\1>/gi 
 let res = zml.replace(reg, (p0, p1, p2) => {
     return `<p>${p2}</p>`
 })
 console.log(res)

在这里插入图片描述

matchAll()

返回迭代器

var s = "zhangmingle";

        var reg = /n/g
        const arr = []

        let res = s.matchAll(reg)
        let res2 = s.matchAll('n')
        console.log(res2);
        for (let i of res) {
            console.log(i);
        }
btoa(encodeURIComponent(str)); // 非ASCII码字符转为Base64编码
decodeURIComponent(atob(str))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值