JavaScript(算法1)

1、冒泡排序

依次比较相邻的两个值,如果后面的比前面的小,则将小的元素排到前面。依照这个规则进行多次并且递减的迭代,直到顺序正确

 

function sort1(array) {
  for(var i = 0;i

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

3、数组去重

 

function duplicates(arr) {
  var resArr = [];
  var flag = true;
  for(var i=0;i

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

 

6、查找字符串中出现最多的字符

  • 对每一个字符进行次数统计
  • 保存出现的最大次数max
  • 循环出与max相对应的字符

 

function maxNumber(array) {
  var arr = [];// 保存出现的字符
  var count = []; // 对应字符出现的次数
  var max = '';// 最大次数
  var str=''
  for(var i=0;imax) {
      max = count[j];
    }
  }
  for(var d=0;d

 

 

你可能感兴趣的:(JS)