JS小技巧

Posted myf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS小技巧相关的知识,希望对你有一定的参考价值。

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
    }, []);
} 

以上是关于JS小技巧的主要内容,如果未能解决你的问题,请参考以下文章

提效小技巧——记录那些不常用的代码片段

必须学会使用的35个Jquery小技巧

zoho在线文档使用小技巧

你可能不知道的JavaScript代码片段和技巧(下)

你可能不知道的JavaScript代码片段和技巧(上)

Jquery 小技巧