1、冒泡排序
依次比较相邻的两个值,如果后面的比前面的小,则将小的元素排到前面。依照这个规则进行多次并且递减的迭代,直到顺序正确
function sort1(array) {
for(var i = 0;i<array.length;i++) {
for (var j = 0;j<array.length-1;j++){
if(array[j+1]<array[j]) {
let temp = array[j];
array[j]=array[j+1];
array[j+1] = temp;
}
}
}
console.log('排序后:'+array);
}
2、快速排序
在需要排序的数组中,任选一个元素作为“基准”,将小于“基准”和大于“基准”的元素分别放到两个新的数组中,等于“基准”的元素可以放在任一数组,并重复上述步骤
function quickSort(array) {
if(array.length<=1) {
return array
} else{
var len = Math.floor(array.length/2)
var temp = array.splice(len,1);
// 一定要将基准数从原数组删除,以方便将其拼接在新数组中间,否则将造成死循环
var left=[];
var right=[];
for(var i = 0;i<array.length;i++) {
if(array[i]<temp){
left.push(array[i]);
} else {
right.push(array[i]);
}
}
return quickSort(left).concat([temp],quickSort(right))
}
}
3、数组去重
function duplicates(arr) {
var resArr = [];
var flag = true;
for(var i=0;i<arr.length;i++){
if(resArr.indexOf(arr[i]) == -1){
if(arr[i] != arr[i]){// 排除掉NaN
if(flag){
resArr.push(arr[i]);
flag = false;
}
}else{
resArr.push(arr[i]);
}
}
}
return resArr;
}
4、对象拷贝
使用递归深层拷贝对象的属性,偷懒方法:JSON.stringfy()和JSON.parse();数组复制可以使用ES6新语法,使用"..."扩展符,使用扩展符复制对象只是复制了对象本身(即只复制了一层,对象内的引用类型属性是指向同一地址的)。
function deepClone(obj){
var newObj = obj.constructor === Array ? []:{};
if(typeof obj !== 'object'){
return
}else{
for(var i in obj){
if(obj.hasOwnProperty(i)){
newObj[i] = typeof obj[i] === 'object'?deepClone(obj[i]):obj[i];
}
}
}
return newObj
}
5、字符串转驼峰
递归实现方式:
function cssStyle2DomStyle(sName) {
if(sName.indexOf('-')<0){
return sName;
}
sName= sName.split('');
var n = sName.indexOf('-');
sName.splice(n,1);
if(n>0) {
sName[n]=sName[n].toUpperCase()
}
sName = sName.join('')
return cssStyle2DomStyle(sName)
}
循环替换
function cssStyle2DomStyle2(sName) {
var arr = sName.split('');
if(arr.indexOf('-') == 0)
arr.splice(0,1);
for(var i=0; i<arr.length; i++){
if(arr[i] == '-'){
arr.splice(i,1);
arr[i] = arr[i].toUpperCase();
}
}
return arr.join('');
}
6、查找字符串中出现最多的字符
- 对每一个字符进行次数统计
- 保存出现的最大次数max
- 循环出与max相对应的字符
function maxNumber(array) {
var arr = [];// 保存出现的字符
var count = []; // 对应字符出现的次数
var max = '';// 最大次数
var str=''
for(var i=0;i<array.length;i++){
if(arr.indexOf(array[i])<0){
arr.push(array[i])
count.push(1)
} else{
let n=arr.indexOf(array[i]);
count[n]+=1;
}
}
console.log('字符', arr);
console.log('次数',count);
for (var j = 0;j<count.length;j++){
if(count[j]>max) {
max = count[j];
}
}
for(var d=0;d<count.length;d++){
if(max===count[d]){
str = str+arr[d]+','
}
}
console.log('出现次数最多的字符'+str+'次数'+max)
}