一:数组
1、改变原数组
pop()
:删除数组末尾的元素,改变数组的长度。push()
:在数组的末尾添加一个或多个元素,改变数组的长度。shift()
:删除数组的第一项即数组下标为 0 的项,改变数组的长度。unshift()
:在数组的开头添加一个或多个元素,改变数组的长度。- splice():从数组中添加、删除、替换元素。
- reverse(): 翻转数组
- sort(): 排序
2、不改变自身
concat()
:用于连接两个或多个数组,不改变原有的数组,返回一个新的数组。join()
:将数组(或者类数组对象和可迭代对象)转换为一个字符串,原数组不变,返回一个新的字符串。slice()
:对于一个有的数组,返回一个从开始下标到结束下标(不包括结束下标)之间的元素组成的新数组。原有的数组并没有被修改,返回一个新的数组。filter()
:筛选出符合条件的数组元素,创建一个新数组将符合条件的元素加入数组中并返回新数组,原数组不做任何改变。map()
:将原数组中的每个元素根据提供的回调函数返回一个新的值,不修改原数组,返回一个新数组。
3、数组滤重
将数组转成set后,再转回来
let arr = [1,1,2,2];
let newArr = [...new Set(arr)]; // [1,2]
如果自己创建的数组,喜欢数组中没有重复的元素。直接用Set代替Array。
Set的has()要比Array的indexOf()效率高很多,在判断某个元素是否在数组中时,建议将Array转成Set。
4.排序
数组的排序方法sort会改变自身,必须传入一个比较函数。没有更方便的方法了,可以给sort封装下
// 只用一次,直接调用sort,传入箭头函数
let arr = [7,8,5,3,10];
arr.sort((a,b)=> a-b);
// 多次使用,封装myArrSort
let anArr = [7,8,5,3,10];
let myArrSort = (oneArr)=> oneArr.sort((a,b)=> a-b);
myArrSort(anArr)
5、循环操作数组
我们经常需要在循环中找到某个符合条件的元素,然后操作该元素。
但是应尽量避免在遍历中对原数组直接进行删除、新增等操作。因为会破坏原本的遍历顺序,可能会导致意料之外的结果。
可以先备份数组,在备份数组上找到符合条件的项,在原数组上进行操作。巧妙的避开风险
// 过滤掉数组中所有的1
const arr = [1, 1, 2, 3, 1, 4, 1];
const copyArr = [...arr];
copyArr.forEach((val, index) => {
console.log(val);
if (val === 1) {
arr.splice(arr.indexOf(val), 1);
}
});
console.log(arr); // 输出 [2, 3, 4]
不过,确实鸡肋。没有for循环删除后,把下标也减一便捷
二:字符串
在 JavaScript 中,字符串是不可变的(immutable),这意味着字符串一旦创建,就不能被修改。因此,字符串的任何方法都不会修改原始字符串,而是返回一个新的字符串。以下是会返回新字符串的方法:
slice(start,end)
substring(start,end)
substr(start,length) // 从指定位置开始,提取字符串中指定长度的字符
replace(regex,val) // 用val替换匹配到的字符
trim() // 清除开头和结尾的空字符
split(str) // 将字符串以str为分隔符,切割成数组
toUpperCase()
toLowerCase()
三:Math常用方法
1、取绝对值
console.log(Math.abs(-19)); // 19
2、取n次方
Math.pow(2,3); // 8
四:力扣刷题经验
1、熟练掌握数组、字符串常用操作方法
2、刷题,从简单的通过率很高的开始,到简单的通过率中等的,再到中等的通过率高的
3、先刷直接处理数据的,再刷有游戏规则的
4、每个题做出来后,都看看别的实现方法。学习语法使用,也学习解题思路
PS:实践
理论需要配合实践才能真正掌握,