常见和字符串和数组的方法
1、常用字符串方法
//输出结果三个名字会紧挨着 '李狗蛋张翠花赵铁柱'//1.反转数组
// 开发当中 后台返回的数据可能是倒序,我们需要反转数组保证逻辑和用户逻辑一致
/*
let arr = ['12.20','12.29','1.2']
转换成
arr = ['1.2','12.29','12.20']
*/
let arr = [4, 3, 2, 1, 9, 8]
// 反转数组
arr.reverse()
console.log(arr);//会得到[8, 9, 1, 2, 3, 4]
//2.清空数组
let arr = [1, 2, 3, 4, 5, 6, 7]
let str = '1,2,3,4,5,6,7,8'
// arr = []
// str = ''
// 将数组的长度置为0即可清空数组
// arr.length = 0
// 注意:!!!但是字符串的长度置为0 是没有任何效果的
// str.length = 0
// console.log(arr[2]);
// 字符串也可以通过索引的方式匹配到指定字符
console.log(str[1]);
//3.数组转换字符串
let arr = ['李狗蛋', '张翠花', '赵铁柱']
// 用一个变量来接受转换后的结果
// arr.join(转换字符串后的分隔符)
// 默认是逗号
// let str = arr.join('-')输出结果三个名字会用中横线隔开着'李狗蛋-张翠花-赵铁柱'
let str = arr.join('')
console.log(str);//输出结果三个名字会紧挨着 '李狗蛋张翠花赵铁柱'
//4.数组排序
let arr = [1,3,5,7,9,2,4,6,8]
// arr.sort() 数组排序
// a - b从小到大排序
arr.sort(function (a, b) {
return a - b
})
//从大到小排序
arr.sort(function (a, b) {
return b - a
})
console.log(arr);
//5.splice属性的可以追加元素(从哪里删,删几个,追加元素,追加元素)
let arr = ['a', 'b', 'c', 'd']
// arr.splice(从哪里删,删几个,追加元素,追加元素)
arr.splice(0, 2, 'e', 'f')
console.log(arr);//最后输出结果为从0位开始删除两个把a,b删除了,然后添加e,f到末尾位置最后输出的结果为['c', 'd','e', 'f']
2、交换数据,展开运算符方法
//1.交换两个数据的类型
let a = 1
let b = 10;
// 交换语句的 前面结束语句一定要带分号,否则会报错
[a, b] = [b, a]
console.log(a, b);//数出结果为 a=10,b=1
//2.展开运算符
let arr1 = [1, 2, 3, 4, 5, 6]
// 复制的是地址,最后的数据其实都是同一个
// 展开运算符 ...
let arr2 = [...arr1]
arr2[0] = 1000
console.log(arr1);
//展开运算符可以对数组里的每一项进行操作,不需要遍历
3.数组遍历的方法
//1.forEach循环的方法
let arr = [1,2,3,4,5,6,7,8,9]
let newArr = []
// for (let i = 0; i < arr.length; i++) {
// newArr.push(arr[i] + 10)
// }
// v -> value值对应数组的每一项里面的内容
// i -> 索引.下标
arr.forEach(function (v, i) {
// v + 10 推入到新数组中 newArr.push()
newArr.push(v + 10)
})
console.log(newArr);//输出的新数组里的每一项都完成了+10
//Array.forEach(function (v, i){ }),用于调用数组的每个元素,并将元素传递给回调函数。原数组不变
//2.map遍历
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) {
// v.age = v.age + 1
v.age += 1
return v
})
console.log(newArr)
//array.map(function (v, i){ }),原数组的每一项执行函数后,返回一个新的数组。原数组不变
//3.filter遍历
let arr = [13, 0, '', 90, 78, '', '']
// 去掉数组中的空字符串
let newArr = arr.filter(function (v, i) {
// return 符合推入新数组的条件->布尔值(过滤)
return v !== '' && v !== 0
})
console.log(newArr);
//array.filter(function(v,i){}),过滤数组中,符合条件的元素并返回一个新的数组
4.数组去重,与将字符串变成驼峰命名
//1.去重操作
let arr = ['aa', 'bb', 'aa', 'cc', 'bb']
let newArr = arr.filter(function (v, i) {
// i 数组当中每一项的索引值
// 第一轮 arr.indexOf('aa') -> 0 i -> 0
// 第二轮 arr.indexOf('bb') -> 1 i -> 1
// 第三轮 arr.indexOf('aa') -> 0 i -> 2
// 第四轮 arr.indexOf('cc') -> 3 i -> 3
// 第五轮 arr.indexOf('bb') -> 1 i -> 4
return arr.indexOf(v) === i
})
console.log(newArr);
//2.将字符串变成驼峰命名法
let str = 'GET-elemenTs-bY-cLAss-nAMe'
// getElementsByClassName
function getName(str) {
// 1. 先要统一的变换成小写字母
let newStr = str.toLowerCase()
// 2. 字符串根据-分隔成数组
let arr = newStr.split('-')
let newArr = arr.map(function (v, i) {
// 分支判断语句
// 第一个单词不需要转换大写
if (i !== 0) {
// v 代表遍历的当前项目 -> elements
// v[0] 首字母 -> e
// v[0].toUpperCase() ->E
// console.log(v[0].toUpperCase());
return v[0].toUpperCase() + v.substr(1)
}
return v
})
// 拿到新数组后,需要通过arr.join() 转换成字符串
let res = newArr.join('')
return res
}