进制转换
parseInt('23',8) //八进制23转换为十进制数
23.toSting(16) //十进制23转换16进制
//m进制转n进制----先把m转换为10进制,在把十进制转换为n进制
js 实现颜色值格式转换 rgb和十六进制的转换
function hexToRgb(hexColor){
//16进制正则
const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/
//颜色值变成小写
const color = hexColor.toLowerCase()
if(reg.test(color)){
// 如果只有三位的值,需变成六位,如:#fff => #ffffff
if (color.length === 4) {
const colorNew = "#";
for (let i = 1; i < 4; i++) {
colorNew += color.slice(i, i + 1).concat(color.slice(i, i + 1));
}
color = colorNew;
}
//处理六位颜色值
const colorChange = []
for(let i =1;i<7;i+=2){
colorChange.push(parseInt('0x'+color.slice(i,i+2)))
}
return `RGB(${colorChange.join()})`
}
}
function rgbToHex(rgbColor){
//rgb正则
const reg = /^(rgb|RGB)/
if (reg.test(rgbColor)) {
//转换为数组
const aColor = rgbColor.replace(/(?:\(|\)|rgb|RGB)*/g, "").split();
var strHex = "#";
for (var i=0; i<aColor.length; i++) {
var hex = Number(aColor[i]).toString(16);
if (hex === "0") {
hex += hex;
}
strHex += hex;
}
return strHex;
}
}
function fibonacci(n) {
let n1 = 1; n2 = 1;
for (let i = 2; i < n; i++) {
[n1, n2] = [n2, n1 + n2]
}
return n2
}
fibonacci(30)
// 爬楼梯
var climbStairs = function (n) {
let n1 = 1; n2 = 2;
if(n===1){return 1}
if(n===2){return 2}
for (let i = 2; i < n; i++) {
[n1, n2] = [n2, n1 + n2]
}
return n2
};
快排、冒泡、选择
function quickSort(arr){
let index = Math.floor(arr.lenth/2)
let pivot = arr.slice(index,index+1)
let left = []
let right= []
for(let i=0; i<arr.length; i++){
if(arr[i]<pivot){
left.push(arr[i])
}else{
right.push(arr[i])
}
}
return quickSort(left).concat([pivot],quickSort(right))
}
//冒泡
function mintomax(arr){
var length=arr.length;
for(var i=0; i<length-1; i++){
for(var j=0; j<length-i-1; j++){
if(arr[j]>arr[j+1]){
[arr[j],arr[j+1]]=[arr[j+1],arr[j]]
}
}
}
return arr;
}
//选择排序
function selsetSort(arr){
var length = arr.length;
var index;
for(var i=0;i<length-1;i++){
index=i;
for(var j=i+1;j<length;j++){
if(arr[index]>arr[j]){//寻找最小值
index=j;//保存最小值的索引
}
}
[arr[i],arr[index]=[arr[index],arr[i]]
}
return arr;
}
//插入排序
function Insertion(arr) {
let len = arr.length;
// 2.外层循环: 外层循环是从1位置开始, 依次遍历到最后
for (var i = 1; i < length; i++) {
// 3.记录选出的元素, 放在变量temp中
var j = i
// 4.内层循环: 内层循环不确定循环的次数, 最好使用while循环
while (j > 0 && this.array[j-1] > array[i]) {
array[j] = array[j-1]
j--
}
// 5.将选出的j位置, 放入temp元素
array[j] = array[i]
}
}
最长不重复子串
function lengthString(s){
let res = 0
let i= 0
let arr = []
while(i<s.length){
if(arr.includes(s[i])){
arr.shift()
continue
}else{
arr.push(s[i])
}//
res=Math.max(res,arr.length)
i++
}
return res
}