1. 将一个指定整数值等分成指定的数量,最终返回这个能被等分的整数值

  /**   * @param {Number}   * @return {Number}   */  function intervalHandle (num, num_interval) {      if (indexOfHandle(num, num_interval)) {        return num      } else {        for (var i = 0; i <= num_interval; i++) {          var num_new = num              num_new += i;          if (indexOfHandle(num_new, num_interval)) {            return num_new          }        }      }      function indexOfHandle(x, y) {        return String((x / y)).indexOf('.') === -1      }  }  intervalHandle(1999, 10) // =>  2000  // intervalHandle(给定的值, 要等分的个数)  // 利用场景: 图表x/y轴计算最大值和距离值

2. 判断一个数是不是质数/素数

概念:

  • 质数又称素数。一个大于 1 的自然数,除了 1 和它本身外,不能被其余自然数整除的数叫做质数;否则称为合数。
  • 0 和 1 既不是质数也不是合数,最小的质数是 2

     /**   * @param {Number}   * @return {Number}   */  function isPrime(num) {  if (num <= 3) return n > 1  let sqrt = parseInt(Math.sqrt(num))  for (let i = 2; i <= sqrt; i++) {if (num % i === 0) {  return false}  }  return true}console.log(isPrime(10)) // => false

    3. 计算两个数字之间的间断值(输出1,4 =>输入1,2,3,4)

function continuousValue(numStart,numEnd){        let a=parseInt(numStart);      let b=parseInt(numEnd);      let c = [];      if (numStart - b < 0) {        const number = Math.abs(a - b) + 1;        for (let i = a; i < a + number; i++) {          c.push(i);        }      } else if (a - b === 0) {        c.push(a)      } else if (a - b > 0) {        const number = Math.abs(a - b);        for (let i = a; i > number; i--) {          c.push(i);        }      }      return c.join(',');    }    continuousValue(1,5) // => '1,2,3,4,5'

4. 计算一组数值中每个数值的占比(百分比%)

/** * @description: 占比算法(最大余额法) * @param {Array} valueList 要计算的数组 * @param {index} idx 要计算数组中值的下表 * @param {number} precision 百分比保留几位小数 */function getPercentValue(valueList, idx, precision) {  if (!valueList[idx]) {      return 0;  }  var sum = valueList.reduce(function(acc, val) {      return acc + (isNaN(val) ? 0 : val);  }, 0);  if (sum === 0) {      return 0;  }  var digits = Math.pow(10, precision);  var votesPerQuota = valueList.map(function(val) {      return (isNaN(val) ? 0 : val) / sum * digits * 100;  });  var targetSeats = digits * 100;  // 再向下取值,组成数组  var seats = votesPerQuota.map(function(votes) {      return Math.floor(votes);  });  var currentSum = seats.reduce(function(acc, val) {      return acc + val;  }, 0);  var remainder = votesPerQuota.map(function(votes, idx) {      return votes - seats[idx];  });  while (currentSum < targetSeats) {      var max = Number.NEGATIVE_INFINITY;      var maxId = null;      for (var i = 0, len = remainder.length; i < len; ++i) {          if (remainder[i] > max) {              max = remainder[i];              maxId = i;          }      }      // 对最大项余额加1      ++seats[maxId];      remainder[maxId] = 0;      ++currentSum;  }  // 总数占比100%  return seats[idx] / digits;}// 调用let a = [1,2]let result = [];a.forEach((v, i) => {result.push(getPercentValue(a, i, 0))});console.log(result) // [33, 67]