关于javascript:JS小技巧

2次阅读

共计 1717 个字符,预计需要花费 5 分钟才能阅读完成。

1、获取指定范畴内的随机数

function getRadomNum(min,max){return  Math.floor(Math.random() * (max - min + 1)) + min;
}

2、验证是否为数组

function isArray(obj) {return Object.prototype.toString.call(obj) === '[object Array]';
}

3、统计字符串中次数最多字母

function findMaxDuplicateChar(str) {if(str.length == 1) {return str;}
  var charObj = {};
  for(var i = 0; i < str.length; i++) {if(!charObj[str.charAt(i)]) {charObj[str.charAt(i)] = 1;
    } else {charObj[str.charAt(i)] += 1;
    }
  }
  var maxChar = '',
      maxValue = 1;
  for(var k in charObj) {if(charObj[k] >= maxValue) {
      maxChar = k;
      maxValue = charObj[k];
    }
  }
  return maxChar + ':' + maxValue;
}

一、阶乘

非递归实现

function factorialize(num) {
  var result = 1;
    if(num < 0) return -1;
    if(num == 0 || num == 1) return 1;
    while(num>1) {result *= num--;}
    return result;
}

递归实现

function factorialize(num) {
  var result = 1;
  if(num < 0) return -1;
  if(num == 0 || num == 1) return 1;
  if(num > 1) return num*factorialize(num-1);
}

一、简略一维数组的去重:

办法一:双层循环去重

function uniqueArr(arr) {var result = [];
    for (var i = 0; i < arr.length; i++) {for (var j = i + 1; j < arr.length; j++) {if (arr[i] === arr[j]) {j = ++i;}
        }
        result.push(arr[i]);
    }
    return result;
}

办法二:利用对象的属性不能雷同去重

function uniqueArr(arr) {var result = [];
    var obj = {};
    for (var i = 0; i < arr.length; i++) {if (!obj[arr[i]]) {obj[arr[i]] = 1;
            result.push(arr[i]);
        }
    }
    return result;
}

办法三:利用下标

function uniqueArr(arr) {var result = [arr[0]];
    for (var i = 1; i < arr.length; i++) {if (result.indexOf(arr[i]) == -1) {result.push(arr[i]);
        }
    }
    return result;
}

办法四:ES6 去重

function uniqueArr(arr) {return Array.from(new Set(arr));
}

二、蕴含对象的二维数组去重:

办法一:双重循环去除法

function uniqueArr(arr, key) {var newArr = [];
    for (var i = 0; i < arr.length; i++) {
        var flag = true;
        for (var j = 0; j < newArr.length; j++) {if (arr[i][key] == newArr[j][key]) {flag = false;}
        }
        if (flag) newArr.push(arr[i]);
    }
    return newArr;
}

办法二:利用 reduce 来实现


function uniqueArr(arr, key) {var hash = {};
    return arr.reduce(function(item, next) {hash[next[key]] ? '' : hash[next[key]] = true && item.push(next);
        return item
    }, []);
} 
正文完
 0