-
任意長度數(shù)組的最小/大數(shù)
es6 寫法 // 最小值 Math.min(...arr) // 最大值 Math.max(...arr)
-
數(shù)組升序/降序
var points = [40, 100, 1, 5, 25, 10]; points.sort((a, b)=>{return a - b});//升序 points.sort((a, b)=>{return b - a});//降序
-
排序?qū)ο髷?shù)組
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}]; cars.sort((a, b)=>{return a.year - b.year});
-
顛倒數(shù)組中元素的順序(不排序僅顛倒)
arr.reverse()
-
數(shù)組去重
一、 set與解構(gòu)賦值去重(ES6中新增了數(shù)據(jù)類型set褐耳,set的一個最大的特點就是數(shù)據(jù)不重復(fù)) 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// 發(fā)生數(shù)據(jù)交換flag置為1
}
}
}
return arr
}
-
選擇排序
示例圖
數(shù)據(jù)規(guī)模越小越好
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]) { // 尋找最小的數(shù)
minIndex = j; // 將最小數(shù)的索引保存
}
}
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.結(jié)束遞歸(當(dāng)ary小于等于一項买雾,則不用處理) if (arr.length <= 1) { return arr } // 1. 找到數(shù)組的中間項,在原有的數(shù)組中把它移除 const middleIndex = Math.floor(arr.length / 2) const middle = arr.splice(middleIndex, 1)[0] // 2. 準備左右兩個數(shù)組杨帽,循環(huán)剩下數(shù)組中的每一項漓穿,比當(dāng)前項小的放到左邊數(shù)組中,反之放到右邊數(shù)組中 const leftArr = [], rightArr = [] for (let i = 0; i < arr.length; i++) { const current = arr[i] current < middle ? leftArr.push(current) : rightArr.push(current) } // 3. 遞歸方式讓左右兩邊的數(shù)組持續(xù)這樣處理注盈,一直到左右兩邊都排好序為止晃危。 //(最后讓左邊+中間+右邊拼接成最后的結(jié)果) 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
-
字符串重復(fù)指定次數(shù)返回
"Hello,".repeat(2)