JavaScript 数组及字符串常用技巧
字符串: 转换大小写 查找索引返回位置 将字符串分割为数组
// 将字符串中的内容转换为小写
let str1 = 'ABCDEfgh'
console.log(str1.toLowerCase())
// 将字符串中的内容转换为大写
let str2 = 'abCDefgh'
console.log(str2.toUpperCase());
// 字符串或数组.indexOf('要检索的字符串') 如果返回-1 则代表没有找到
let str1 = 'ABCDEfgh'
console.log(str1.indexOf('D'));
//字符串.substr 字符串提取 从指定位置提取指定长度的字符串 原字符串不受影响
let str1 = 'ABCDEfgh'
console.log(str1.substr(1, 4));
//字符串.split() 字符串装换成数组
let str1 = 'ABCDEfgh'
console.log(str1.split(''));
console.log(str1.split(','));
console.log(str1.split('-'));
数组: 排序 清空 翻转 转字符串 删除添加
//数组及字符串清空
let arr = [1, 2, 3, 4, 5, 6, 7]
let str = '1,2,3,4,5,6,7,8'
arr = [] //清空数组
str = '' //清空字符串
arr.length = 0 //将数组的长度置为0也可清空数组
//注意:!!!但是字符串的长度置为0 是没有任何效果的
//字符串也可以通过索引的方式匹配到指定字符
//数组.join() 将数组转换成字符串,默认是逗号
let arr = ['李狗蛋', '张翠花', '赵铁柱']
console.log(arr);
// 用一个变量来接受转换后的结果
// arr.join(转换字符串后的分隔符)
let str = arr.join('-')
let str = arr.join('')
console.log(str);
// 数组.sort() 数组排序
let arr = [4, 9, 0, 10, 240, -12, 98]
// a - b从小到大排序
arr.sort(function (a, b) {
return a - b
})
// b - a从大到小排序
arr.sort(function (a, b) {
return b - a
})
console.log(arr);
//数组.splice 删除中指定元素(从哪里删,删几个,追加元素,追加元素)
let arr = ['李狗蛋', '张翠花', '赵铁柱', '王小二']
arr.splice(1, 2, '松哥', '仙女兔')
console.log(arr);
//数组.reverse() 反转数组,会改变原数组,并返回反转后的新数组
let arr = [10, 2, 3, 4, 5, 6]
arr.reverse()
console.log(arr);
数组的数据交换和展开运算符
//数组的数据交换[数据1,数据2]=[数据2,数据1] 交换语句的 前面结束语句一定要带分号,否则会报错
let a = 1
let b = 10;
[a, b] = [b, a]
console.log(a, b);
// 展开运算符 ...
// 只拷贝内容,并创建新的数组.修改时对原数据没有影响
let arr1 = [1, 2, 3, 4, 5, 6]
let arr2 = [...arr1]
arr2[0] = 1000
console.log(arr1);
// 运用场景 由于 Math.max() 里只能放 [数组]
let arr = [1, 2, 3, 4, 5, 6]
console.log(Math.max(...arr));
数组的forEach遍历 map遍历 filter遍历
// v -> value 值 i -> 索引
// 数组.forEach(function (v, i) {}) 只能做遍历操作
let arr = [4, 9, 0, 10, 240, -12, 98]
let newArr = []
arr.forEach(function (v, i) {
// v + 10 推入到新数组中 newArr.push()
newArr.push(v + 10)
})
console.log(newArr);
// 数组.map(function (v, i) {})对原数组当中的每一项增补 返回一个新数组
let arr = [4, 9, 0, 10, 240, -12, 98]
let newArr = arr.map(function (v, i) {
return v + 10
})
console.log(newArr);
// 数组.filter(function (v, i) {}) filter 过滤 对原数组重新过滤筛选,返回过滤筛选后的新数组
let arr = [13, 0, '', 90, 78, '', '']
// 去掉数组中的空字符串
let newArr = arr.filter(function (v, i) {
// return 符合推入新数组的条件->布尔值(过滤)
return v !== '' && v !== 0
})
console.log(newArr);
//filter 过滤去重案例
let arr = ['aa', 'bb', 'aa', 'cc', 'bb']
let newArr = arr.filter(function (v, i) {
// console.log(i);
// i 数组当中每一项的索引值
// console.log(arr.indexOf(v));
// 第一轮 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);