JavaScript-开关条件返回数组

JavaScript-开关条件返回数组,javascript,switch-statement,Javascript,Switch Statement,根据输入,函数应返回从“开始”到“结束”的“num”元素数组。“type”参数确定它们是整数('1')还是浮点('0')。 首先创建一个长度为'num'的新数组,然后有一个switch语句来确定生成的是整数还是十进制数。 我似乎在退货方面有问题。我从Mozilla的开发者网站上获取的生成随机数的函数。整个想法都会输入React Native的action creator,但我认为这与此无关 export const genNum = (start, end, num, type) => {

根据输入,函数应返回从“开始”到“结束”的“num”元素数组。“type”参数确定它们是整数('1')还是浮点('0')。 首先创建一个长度为'num'的新数组,然后有一个switch语句来确定生成的是整数还是十进制数。 我似乎在退货方面有问题。我从Mozilla的开发者网站上获取的生成随机数的函数。整个想法都会输入React Native的action creator,但我认为这与此无关

export const genNum = (start, end, num, type) => {
  let numberArray = new Array(num);

  switch (type) {
    case 1:
      return numberArray.map(function(num) {
        let min = Math.ceil(start);
        let max = Math.floor(end);
        return Math.floor(Math.random() * (max - min)) + min;
      });
    default:
      return numberArray.map(function(num) {
        return Math.floor(Math.random() * (max - min)) + min;
    });
  }
};
编辑: 我不认为这是一个重复,因为它试图结合这两种情况。我仍在阅读reduce()以消除不必要的switch语句。我接受了你的更正。目前看起来如下(我仍然需要将浮点数四舍五入到2dp)


如果正确初始化阵列,您的一些问题将得到解决。您无法映射正在创建的数组,因为它实际上不包含任何值。我建议您将定义数组的行更改为:

let numberArray = Array(num).fill(-1);

然后,您可以解决代码中的一些其他问题(例如,第二个case块中没有定义min和max,浮点部分不起作用,因为您将它们舍入为整数)

返回它们时出现问题是什么意思?当我阅读您的代码时,它似乎返回的数组很好,但它是一个没有条目的数组,因此
map
不会对其执行任何操作(map为每个条目运行回调一次,但当您的数组没有条目时,这意味着回调永远不会运行)。最终结果是返回一个长度等于
num
且没有条目的数组。这看起来像是一个过于复杂的
reduce()
。为什么您需要一个
开关
映射()
的复制?“可能重复”注释的可能重复似乎是关于生成一个随机数,而不是返回一个数组。@charlietfl我一直在看reduce(),但想不出如何在这里应用它来简化逻辑。有什么提示吗?非常感谢。
let numberArray = Array(num).fill(-1);