简介

String, array

1.字符串方法

1.1方法,都不改变原字符串

let str = ‘abcdEFG’

1.1.1 str.charAt();返回指定位置的字符
1
str.charAt(1) // 'b'
1.1.2 str.charCodeAt();返回指定位置的unicode码
1
str.charCodeAt(1) // 98
1.1.3 str.concat();拼接字符串
1
str.concat('a',1) // 'abcdEFGa1'
1.1.4 str.split(‘’);转为数组
1
str.split('') // [a,b,c,d,E,F,G]
1.1.5 str.slice(1,2);截取字符串,左闭右开,如果是负数,则是字符串长度+这个负数的值,一般不要写负数
1
str.slice(1,2) // 'b'
1.1.6 str.substring(1,2);截取字符串,左闭右开,如果是负数,当0来做,以两个参数中小的值作为起始
1
str.substring(1,2) // 'b'
1.1.7 str.substr(1,3);截取字符串,第二个参数是长度,一般不要写负数,负数第一个同slice,第二个同substring
1
str.substr(1,3) // 'bcd'
1.1.8 str.includes(); 第二个参数设置从哪开始找
1
str.includes('a') // true
1.1.9 str.match(); 匹配字符串,返回匹配信息
1
str.match('a') // ["a", index: 0, input: "abcdEFG", groups: undefined]
1.1.10 str.search(); 同indexOf,只是缺少第二个参数,不能定义起始位置
1.1.9 str.startsWith(), str.endsWith(); 第二个参数是开始或结束位置,传数字
1.1.10 str.toLowerCase(), str.toUpperCase()
1.1.11 str.indexOf(), str.lastIndexOf(); 返回第一次或最后一次出现的下标,没有返回-1
1.1.12 str.match(); 匹配字符串,返回匹配信息
1.1.13 str.replace(‘a’,’b’)
1.1.14 str.repeat(2); 重复两遍
1.2 字符串中出现次数最多的字符
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 出现最多的字符是哪个
function maxLetter(str) {
let obj = {}
for(let i = 0; i < str.length; i++) {
if(!obj[str.charAt(i)]) {
obj[str.charAt(i)] = 1
}else {
obj[str.charAt(i)] ++
}
}
let max = 0
let maxChar = []
for(let i in obj) {
if(max < obj[i]) {
max = obj[i]
}
}
for(let i in obj) {
if(obj[i] === max) {
maxChar.push(i)
}
}
console.error(max, maxChar)
}

2.数组的方法

2.1常用方法

不改变原数组:

Join() 返回字符串

Map(), filter() , slice(1,2), concat()返回数组, 浅拷贝,顶多第一层算深拷贝

Reduce() 返回和

Find(), findIndex() 返回那一项,那一项的下标

forEach() 没有返回值

Every(function), some(function),includes() 返回boolean

indexOf(),lastIndexOf() 返回下标

改变原数组:

Push, pop, unshift, shift, splice, sort, reverse

2.2 题
2.2.1去重https://segmentfault.com/a/1190000016418021?utm_source=tag-newest

1.利用obj键不能重复会出现’true’和true误认为重复,不同引用相同表现的对象也认为重复

1
2
3
4
5
6
7
8
9
10
2.
function unique(arr) {
let array = []
arr.forEach(item => {
if(!array.includes(item)) { // indexOf会把NaN和'NaN'去掉不带引号的
array.push(item)
}
})
return array
}
1
2
3
4
3.如果数组的元素是对象,则达不到去重的目的
function unique(arr) {
return arr.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], [])
}

4.还有Map和Set的es6的方法,到复习es6的时候再补上

2.2.2排序
1
2
3
4
5
6
7
8
9
10
11
12
13
冒泡
function sortFunc(arr) {
for(let i = 0, len = arr.length; i < len; i ++) {
for(let j = i+1, len = arr.length; j < len; j ++) {
if(arr[i] < arr[j]) {
let temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
}
}
}
return arr
}
1
2
3
4
5
6
7
8
sort
function sortFunc(arr) {
let copyArr = JSON.parse(JSON.stringify(arr))
copyArr.sort((x,y) => {
return x.age-y.age
})
return copyArr
}