常用字符串方法
转换大小写
<script>
let xiao = 'AsBsfaFfscKCAsaO'
// 转换成小写
let res = xiao.toLowerCase()
// 转换成大写
let res2 = xiao.toUpperCase()
console.log(res, res2);
</script>
检索字符串位置
<script>
let str = 'abcddcfijrnla'
// 检索当前元素在字符串中第一次出现的索引值
let index = str.indexOf('d')
console.log(index);
</script>
提取字符串
<script>
let str = 'ligoudanzhangcuihuazhaotiezhu'
// 第一个值:从哪个字母开始截取
// 第二个值:截取多少个字母
// 第二个值不写则代表一直截取到最后
let newStr = str.substr(8, 11)
console.log(newStr);
</script>
字符串转换成字符串数组
<script>
let str1 = 'ligoudan zhangcuihua zhaotiezhu'
let str2 = 'ligoudan,zhangcuihua,zhaotiezhu'
let str3 = 'ligoudan-zhangcuihua-zhaotiezhu'
// 括号里的是去掉对应字符串的分隔符,转换后默认是逗号
let arr1 = str1.split(' ')
let arr2 = str2.split(',')
let arr3 = str3.split('-')
console.log(arr1);
console.log(arr2);
console.log(arr3);
</script>
交换数值
<script>
let a = '1'
let b = '10';
// 交换语句的,前面结束语句一定要带分号,否则会报错
[a, b] = [b, a]
console.log(a, b);
</script>
常用数组方法
顺序反转
<script>
let arr = [1, 3, 8, 15, 22, 23, 30, 32]
console.log(arr.reverse());
</script>
清空数组
<script>
let arr = [1, 3, 8, 15, 22, 23, 30, 32]
// 将数组的长度置为0即可清空数组
drr.length = 0
console.log(arr);
</script>
数组转字符串
<script>
let arr = ['李狗蛋', '张翠花', '赵铁柱']
console.log(arr);
// 需要用一个变量来接收转换后的结果
// arrjoin('') 括号里可改变分隔符
// 括号里所写内容需要用引号包裹起来
// 传递空字符串即可无缝连接数组中的元素
let str = arr.join('')
console.log(str);
</script>
数组排序
<script>
let arr = [240, 320, 55, 68, 14, 73, 7, 11]
// 从小到大排序
arr.sort(function (a, b) {
return a - b
})
// 从大到小排序
arr.sort(function (a, b) {
return b - a
})
console.log(arr);
</script>
删除数组中指定元素
<script>
let arr = ['李狗蛋', '张全蛋', '赵铁柱', '王小二']
// 选中索引为[1],删除2个,并在被删除数组元素的位置追加新的数组元素(不限)
arr.splice(1, 2, '张翠花', '松哥', '仙女兔')
console.log(arr);
</script>
展开运算符
<script>
let arr1 = [1, 2, 3, 4, 5, 6]
// arr2复制的只是arr1里面的值,并没有将地址整个复制过来,所以当重新赋值的时候,并不会影响到arr其本身的值
let arr2 = [...arr1]
arr2[0] = 1000
console.log(arr1);
console.log(arr2);
</script>
展开运算符*案例
// 开发当中,我们可能会收到一串数组,求其最大值,此时用普通的方法较难实现,可以利用“展开运算符”来帮我们达成目标
<script>
let arr = [1, 2, 3, 4, 5, 6,7]
// console.log(Math.max(...arr));
console.log(Math.max(...arr));
</script>
遍历方法
forEach遍历
与普通循环差不多,遍历数组
<script>
let arr = [4, 9, 0, 10, 240, -12, 98]
let newArr = []
// v - value值(数组中的每一项)
// i - 索引
arr.forEach(function (v, i) {
newArr.push(v + 10)
})
console.log(newArr);
</script>
map遍历
对数组某一项进行增减操作,并返回至新数组
<script>
let arr = [4, 9, 0, 10, 240, -12, 98]
let newArr = arr.map(function (v, i) {
return v + 10
})
console.log(newArr);
</script>
map遍历*案例
// 遍历对象,将所有人的年龄+1
<script>
let arr = [{
name: '李狗蛋',
age: 16,
sex: '男'
}, {
name: '张翠花',
age: 20,
sex: '女'
}, {
name: '赵铁柱',
age: 25,
sex: '男'
}, {
name: '王小二',
age: 19,
sex: '男'
}]
let newArr = arr.map(function (v, i) {
// 将数值中的年龄+1,并重新赋值
v.age = v.age + 1
return v
})
console.log(newArr);
</script>
filter遍历
过滤数组中符合条件的元素,并返回至新数组
<script>
// filter 过滤
let arr = [13, 0, '', 90, 78, '', '']
// 去掉数组中的空字符串
let newArr = arr.filter(function (v, i) {
// return 将符合条件的元素推入新数组
// 把 不等于 '' 且 不等于 0 的值 返回至新数组
return v !== '' && v !== 0
})
console.log(newArr);
</script>
filter遍历*案例
// 数组去重
<script>
let arr = [1, 1, 2, 3, 4, 4, 5, 6, 6, 6, 6, 7, 7, 8, 9, 9, 9]
let newArr = arr.filter(function (v, i) {
// i 数组当中每一项的索引值
// 第一轮 arr.indexOf(1) -> 0 i -> 0
// 第二轮 arr.indexOf(1) -> 0 i -> 1
// 第三轮 arr.indexOf(2) -> 2 i -> 2
// 第四轮 arr.indexOf(3) -> 3 i -> 3
// 第五轮 arr.indexOf(4) -> 4 i -> 4
// 第六轮 arr.indexOf(4) -> 4 i -> 5
// 第七轮 arr.indexOf(5) -> 6 i -> 6...
// 当数组元素第一次出现的位置与索引值相同时,我们判定为是第一次出现,将其返回至新数组
return arr.indexOf(v) === i
// .indexOf() 查找数值在数组中第一次出现的位置
})
console.log(newArr);
console.log(arr);
</script>
综合案例
统计字符串中字母出现的次数
<script>
let str = 'aaashfshsjbaks'
// 字符串转数组
let arr = str.split('')
// 声明一个空对象
let obj = {}
arr.forEach(function (v, i) {
// 判断 刚出现的新建一个,出现过的+1
if (obj[v]) {
obj[v] = obj[v] + 1
} else {
obj[v] = 1
}
})
console.log(obj);
</script>
转换得到驼峰命名法
<script>
let str = 'GET-elemenTs-bY-cLAss-nAMe'
// 1.统一转换成小写
let newStr = str.toLowerCase()
// 2.将字符串转换为数组,并去掉中间的中横线
let arr = newStr.split('-')
// 3.遍历数组元素,除了索引为'0'不做改变,其余的首字母转换成大写
let newArr = arr.map(function (v, i) {
// 索引不为'0'的进入条件
if (i !== 0) {
// v - 数组中的每一项
// 0 - 数组中每一项中的第一位
// .substr 只写了一个值的情况下,代表一直截取到最后
return v[0].toUpperCase() + v.substr(1)
}
return v
})
// 4.将数组重新转换为字符串,并去掉数组中默认的逗号
let res = newArr.join('')
console.log(res);
</script>
截取网站中的字符串并转换成对象
<script>
let str = 'http://www.heima.com?key0=haha&key1=hello&key2=xixi'
function getParams(str) {
// 1.获取?第一次出现的索引值
let index = str.indexOf('?')
// 2.从?后面开始截取,一直到最后,得到我们要做变化的值
let targetStr = str.substr(index + 1)
// 3.根据'&'拆分将字符串转成数组
let targetArr = targetStr.split('&')
// 4.遍历数组,将'='去除
let newArr = targetArr.map(function (v) {
return v.split('=')
})
// 5.声明一个空对象,再次遍历数组,将数值塞入对象
let obj = {}
newArr.forEach(function (v, i) {
obj[v[0]] = v[1]
})
return obj
}
console.log(getParams(str));
</script>