算法
2021-07-08 本文已影响0人
小碗吃不了
-
任意长度数组的最小/大数
es6 写法 // 最小值 Math.min(...arr) // 最大值 Math.max(...arr)
-
数组升序/降序
var points = [40, 100, 1, 5, 25, 10]; points.sort((a, b)=>{return a - b});//升序 points.sort((a, b)=>{return b - a});//降序
-
排序对象数组
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}]; cars.sort((a, b)=>{return a.year - b.year});
-
颠倒数组中元素的顺序(不排序仅颠倒)
arr.reverse()
-
数组去重
一、 set与解构赋值去重(ES6中新增了数据类型set,set的一个最大的特点就是数据不重复) function unique(arr) { if (!Array.isArray(arr)) { console.log('type error!') return } return [...new Set(arr)] } 二、Array.from与set去重 function unique(arr) { if (!Array.isArray(arr)) { console.log('type error!') return } return Array.from(new Set(arr)) }
-
冒泡排序
示例图
function bubbleSort(arr) {
let temp = null, flag = 1
const len = arr.length
for (let i = 0; i <= len - 1 && flag === 1; i++) {
flag = 0
for (let j = 0; j < len - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j + 1]
arr[j + 1] = arr[j]
arr[j] = temp
flag = 1// 发生数据交换flag置为1
}
}
}
return arr
}
-
选择排序
示例图
数据规模越小越好
function selectionSort(arr) {
var len = arr.length;
var minIndex, temp;
for (var i = 0; i < len - 1; i++) {
minIndex = i;
for (var j = i + 1; j < len; j++) {
if (arr[j] < arr[minIndex]) { // 寻找最小的数
minIndex = j; // 将最小数的索引保存
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
-
插入排序
示例图function insertSort(arr) { for (let i = 1; i < arr.length; i++) { //将arr[i]插入到arr[i-1],arr[i-2],arr[i-3]……之中 for (let j = i; j > 0; j--) { if (arr[j] < arr[j - 1]) { [arr[j - 1], arr[j]] = [arr[j], arr[j - 1]] } } } return arr }
-
快速排序
示例图const arr = [5, 2, 7, 8, 34, 7, 39, 12, 56, 9, 1] function quickSort(arr) { // 4.结束递归(当ary小于等于一项,则不用处理) if (arr.length <= 1) { return arr } // 1. 找到数组的中间项,在原有的数组中把它移除 const middleIndex = Math.floor(arr.length / 2) const middle = arr.splice(middleIndex, 1)[0] // 2. 准备左右两个数组,循环剩下数组中的每一项,比当前项小的放到左边数组中,反之放到右边数组中 const leftArr = [], rightArr = [] for (let i = 0; i < arr.length; i++) { const current = arr[i] current < middle ? leftArr.push(current) : rightArr.push(current) } // 3. 递归方式让左右两边的数组持续这样处理,一直到左右两边都排好序为止。 //(最后让左边+中间+右边拼接成最后的结果) return quickSort(leftArr).concat(middle, quickSort(rightArr)) } console.log(bubbleSort(arr)) // [1, 2, 5, 7, 7, 8, 9, 12, 34, 39, 56]
-
判断是否包含查询的字符串
var s = 'Hello world!'; s.includes('o') // true
-
判断查询字符串是否在头部/尾部
s.startsWith('Hello') // true s.endsWith('!') // true
-
字符串重复指定次数返回
"Hello,".repeat(2)