算法学习中的小技巧

Last updated on 2023-09-22 10:11

1.求最大值

1.求数组的最大值

方法一:排序

1
2
3
4
5
6
7
8
let sortArr = arr.sort((a, b) => a - b)
// 最小值
sortArr[0]
// 最大值
sortArr[sortArr.length - 1]
// 结果
console.log(sortArr[0]); // 1
console.log(sortArr[sortArr.length - 1]); // 9

方法二:使用扩展运算符

1
2
console.log(Math.min(...arr)); // 1
console.log(Math.max(...arr)); // 9

方式三:使用reduce方法

1
2
3
4
let res = arr.reduce((pre, cur) => {
console.log(pre + "----" + cur);
return pre > cur ? pre : cur;
});

2.求map的最大值

2.数组去重

方法一:使用reduce方法

1
2
3
4
5
6
7
8
let arr = [1, 2, 3, 4, 4, 1]
let newArr = arr.reduce((pre,cur) => {
if(!pre.includes(cur)){
return pre.concat(cur)
}else{
return pre
}
},[])

3.字符统计

方法一:使用reduce方法

1
2
3
4
5
let str = 'abcdaabc';
str.split('').reduce((res, cur) => {
res[cur] ? res[cur] ++ : res[cur] = 1 // 如果cur第一次出现,记为1
return res; // 否则记录数+1
}, {}) // 得到 {a: 3, b: 2, c: 2, d: 1}

4.数组压平

方法一:reduce方法

1
2
3
4
5
let arr = [[0, 1], [2, 3], [4, 5]]      // 二维数组
let newArr = arr.reduce((pre,cur) => {
return pre.concat(cur) // 合并pre 与 cur, 并返回一个新数组
},[])
console.log(newArr); // 一维数组 [0, 1, 2, 3, 4, 5]

算法学习中的小技巧
https://luoynothing.github.io/2023/09/22/算法学习中的小技巧/
Author
John Doe
Posted on
2023-09-22 09:03
Updated on
2023-09-22 10:11
Licensed under