JS返回两个数字之间的数组

250 阅读1分钟

一、返回两个数字之间的数组

1、Array() 方法生成一个长度为x的空数组

2、Array.from() 方法从一个类似数组或可迭代对象中创建一个新的,浅拷贝的数组实例。

如果指定了map参数,新数组中的每个元素会执行该回调函数。

function getNumArr (min,max){
        //Array.from(Array(10-2+1), (v, k) => k + min);
      return Array.from(Array(max - min + 1), (v, k) => k + min);

}
getNumArr(2, 10)
//[2, 3, 4, 5, 6, 7, 8, 9, 10]

二、进阶版

加上步进,以及步进可能为小数

function getNumArr(min, max, space) {

      //步进带几位小数

      let n = 0;

      const spotIndex = String(space).indexOf(".") + 1;

      if (spotIndex) {

        n = String(space).length - spotIndex;

      }

      // 10的n次发

      const m = Math.pow(10, n);     


      //js计算小数时的精度会丢失,所以要把数四舍五入为最接近的整数计算
      min = Math.round(min*m);

      max = Math.round(max*m);

      space = Math.round(space*m);

 
      // 数组长度(向上取整)

      const arrLength = Math.ceil((max - min) / space + 1);

      return Array.from(Array(arrLength), (v, k) => (k * space  + min) / m);

}
getNumArr(0.6, 2.4, 0.6)
//[0.6, 1.2, 1.8, 2.4]