functionuniqueue(arr){let hashTable = {}
let data = []
for (let i=0; i<arr.length;i++){
if (!hashTable[arr[i]]){
hashTable[arr[i]] = true
data.push(arr[i])
}
}
return data
}
找出字符串中出现次数最多的字母
// str 有个方法,可以和数组一样把字符一个个取出来, str.charAt(i)functionmostOccur(str){let hashTable = {}
for(let i=0;i<str.length;i++){
if (!hashTable[str.charAt(i)]){
hashTable[str.charAt(i)] = 1
} else {
hashTable[str.charAt(i)] += 1
}
}
let max = 1let maxCode = ''for (let key in hashTable) {
if (hashTable[key] > max){
max = hashTable[key]
maxCode = key
}
}
return maxCode
}
冒泡排序(有待解决)
functionchoose(arr) {for (let i = 0; i < arr.length; i++){
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
let temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
}
}
}
return arr
}
functionbubble(arr) {let i = 1 , len = arr.length
while(i < len){
for (let j = 0; j <len-i;j++) {
if (arr[j] > arr[j+1])
[arr[j+1], arr[j] ]=[arr[j], arr[j+1]]
}
i++
}
}
快排
// 数组方法functionquickSort(arr) {if (arr.length <= 1) return arr
let rightArr = []
let leftArr = []
let middle = Math.floor(arr.length / 2)
let key = arr.splice(middle, 1)[0]
for (let i=0;i<arr.length;i++) {
if (arr[i] > key) {
rightArr.push(arr[i])
} else {
leftArr.push(arr[i])
}
}
return [].concat(quickSort(leftArr), [key], quickSort(rightArr))
}
functionsortHelp(arr, low, high) {let i = low, j = hight
let e = arr[low]
while(i < j) {
while(i < j && arr[j] >= e) j--
if (i < j) arr[i++] = arr[j]
while (i < j && arr[i] <= e) i++
if (i <j ) arr[j--] = arr[i]
}
arr[i] = e
if (low < i -1) sortHelp(arr, low, i -1)
if (i + 1 < high) sort(arr, i+1, high)
return arr
}
functionquickSort(arr){
sortHelp(arr, 0, arr.length-1)
}
不借助临时变量,交换
functionswap(a, b){
b = b - a
a = a + b
b = a - b
return [a, b]
}
functionswap1(a, b) {
[a, b ] = [b, a]
return [a, b]
}
斐波那契数列
functionfibonacci(n) {let fibArr = []
let i = 0while(i < n){
if (i <= 1) {
fibArr.push(i)
} else {
fibArr.push(fibArr[i-1] + fibArr[i-2])
}
i += 1
}
return fibArr
}
function* es6Fibonacci(n) {let [pre, cur] = [0, 1]
for(;;){
[pre, cur] = [cur, pre + cur]
yield cur
}
}
// 这里要区分一下 for...in 和 for...of// 推荐在循环对象属性的时候,使用for...in,在遍历数组的时候的时候使用for...of。// for...in循环出的是key,for...of循环出的是value
求数组最大,最小值
functionmaxMin(arr) {let max = Math.max.apply(null, arr)
let min = Math.min(...arr)
return max -min
}
一些简单的JS算法判断回文数function isPlalindrom(str){ return str == str.split('').reverse().join('')}去掉重复值(数组)function uniqueue(arr){ let hashTable = {} let data = [] for (let i=0; ...