js常见的面试题算法
程序员文章站
2022-06-09 19:13:15
...
1.翻转字符串
function reser(str){
return [...str].reverse().join('')
}
2.判断回文字符串
function Mosl(str){
let stri = ''
for(let i= str.length; i>=0; i--){
stri+= str.charAt(i)
}
return str === stri
}
3.生成指定长度的字符串
function randomStr(n){
let strr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
let str = ''
for(let i=0; i<n; i++){
str+= strr.charAt(Math.round(Math.random()* strr.length))
}
return str
}
4.数组去重
function deWeight(arr){
return [... new Set(arr)]
}
5.数组求最大值
function Max(arr){
return Math.max(...arr)
}
6.冒泡排序
function bubbling(arr){
for(let i=0; i<arr.length; i++){
for(let j=0; j< arr.length - 1; j++){
if(arr[j]> arr[j+1]){
[ arr[j], arr[j+1]] = [ arr[j+1], arr[j]]
}
}
}
return arr
}
7.数组排序,从小到大
function arrSort(arr){
arr.sort((a,b)=> a-b)
return arr
}
8.浅复制
function copy(arr){
let newObj = arr instanceof Array ? [] : {}
for(let i in arr){
newObj[i] = arr[i]
}
return newObj
}
9.深复制
function deepCopy(arr){
let newObj = arr instanceof Array ? [] : {}
for(let i in arr){
if( typeof arr[i] == 'object'){
deepCopy(arr[i])
}else{
newObj[i] = arr[i]
}
}
}
//借助JSON实现深复制,但是它不能复制对象里面的方法
function copy(arr){
return JSON.parse(JSON.stringify(arr))
}
10.删除重复的字符
function delStr(str){
return [...new Set([...str])].join('')
}
11.两个相邻相同的字符串抵消
function tongDel(str){
let arr = [...str]
for(let i=0; i<arr.length; i++){
for(let j=0; j<arr.length - 1; j++){
if(arr[j] === arr[j+1]){
arr.splice(j,2)
}
}
}
return arr.join('')
}
12.删除相邻相同的字符串
function delStr(str){
let arr = [] , newStr
for(let i=0; i<str.length; i++){
if(str.charAt(i) !== newStr){
arr.push(str[i])
newStr = str[i]
}
}
return arr.join('')
}
13写个方法 两个数字变量相互交互值,不借助第三个变量
//方法一
function swop(num1,num2){
// 解构赋值
[num1,num2] = [num2, num1]
return {
num1,
num2
}
}
//方法二
function newSwop(num1,num2){
//借助数组
num2 = [num1, num1 = num2][0]
return {
num1,
num2
}
}
14.统计字符串中次数最多的字母
function statistics(str){
let arr = [...str]
let obj = {} , num = 0 , max = 0
for(let j=0; j<arr.length;j++){
if(obj[arr[j]]){
obj[arr[j]]++
}else{
obj[arr[j]] = 1
}
}
//获取字母出现最多的次数
num = Math.max(... Object.values(obj))
//根据字母出现最多的次数,找到那个字母
Object.keys(obj).find( (k)=>{
if(obj[k] === num){
max = k
}
})
return max
}
最后说明:这只是本人自己的一些使用,有不足的地方,欢迎大家前来指正
上一篇: JavaScript经典面试题 —— 解决循环打印问题
下一篇: 寒假练习——TEX Quotes