记录一些js面试题,解法,感悟。面试
1.将字符串"aaaabbbbcccc"转换"4a4b4c"数组
var str = "aaaabbbbcccc"
var reg = /([a-z])\1+/ig
var newStr = str.replace(reg,function(item){
return item.length+item[0]
})
console.log(newStr)
复制代码
var str = "aaaabbbbcccc"
var newStr = ""
var num = 1
for(var i=0;i<str.length;i++){
if((str[i]==str[i+1])){
num++
}else{
newStr=newStr + num + str[i]
num=1
}
}
复制代码
1.将字符串"4a4b4c"转换"aaaabbbbcccc"bash
var str = "4a4b4c"
var reg = /(\d+)([a-z])/ig
var newStr = str.replace(reg,function(item){
item.match(reg)
var str = ""
for(var i=0;i<parseInt(RegExp.$1);i++){
str+=RegExp.$2
}
return str
})
console.log(newStr)
复制代码
var str = "4a4b4c"
var newStr = ""
var mark = 0
for(var i=0;i<str.length;i++){
if(str[i]>'9'){
var s = str.slice(mark,i+1)
for(var j=0;j<parseInt(s);j++){
newStr+=s[s.length-1]
}
mark=i+1
}
}
复制代码
2.统计字符串"aaaabbbbcccc"中各个字符出现的次数,好比a出现4次,b出现了4次,c出现了4次ui
var str = "aaaabbbbcccc"
var reg = /([a-z])\1+/ig
var newStr = ""
str.replace(reg,function(item){
newStr+=item[0]+'出现了'+item.length+'次,'
})
console.log(newStr)
复制代码
var str = "aaaabbbbcccc"
var newStr = ""
var obj = {}
for(var i=0;i<str.length;i++){
if(obj[str[i]]){
obj[str[i]]++
}else{
obj[str[i]]=1
}
}
console.log(obj)
复制代码
3.[1,4,2,4,2,4,1,2]数组排序spa
var arr = [1,4,2,4,2,4,1,2]
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[j]>arr[i]){
var m = arr[i]
arr[i] = arr[j]
arr[j] = m
}
}
}
console.log(arr)
复制代码
var arr = [1,4,2,4,2,4,1,2]
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
var m = arr[j]
arr[j] = arr[j+1]
arr[j+1] = m
}
}
}
console.log(arr)
复制代码
var arr = [1,4,2,4,2,4,1,2]
function quickSrot(arr) {
if (arr.length <= 1) {
return arr
}
var middleIndex = Math.floor(arr.length / 2)
var middle = arr[middleIndex]
var left = []
var right = []
for (var i = 0; i < arr.length; i++) {
if (arr[i] <= middle) {
left.push(arr[i])
} else {
right.push(arr[i])
}
}
if (left.length == arr.length) {
left.splice(middleIndex,1)
right.push(middle)
}
if (right.length == arr.length) {
right.splice(middleIndex,1)
left.push(middle)
}
return quickSrot(left).concat(quickSrot(right))
}
quickSrot(arr)
复制代码
处理字符串仍是用正则比较方便,固然用循环也是能够的。 ing。。。code