【问题标题】:Using JavaScript, is it possible to create an array using a function? [duplicate]使用 JavaScript,是否可以使用函数创建数组? [复制]
【发布时间】:2020-06-06 23:58:48
【问题描述】:

我是编程新手,目前我正在结合使用在线课程学习 JavaScript。我正在处理的一个挑战是使用一个函数从数组中返回一个随机字符串。这部分本身很简单,但似乎我需要能够根据我在调用函数时给出的输入创建数组。例如,如果我要创建这样的函数:

function namePicker(names);

然后我调用了这个函数并给了它这个输入:

namePicker("Billy","Timmy","Johnny");

那么我应该能够使用输入来创建这些名称的数组。但是,当我尝试将其用于随机名称选择器的代码时,只有我给出的名字会返回给我。

我在这里做错了什么?这是我一直在处理的完整代码:

function lunchClubLottery(names) {
    var lunchClub = [names];    
    var randomNumber=Math.floor(Math.random()*lunchClub.length);
    return lunchClub[randomNumber];
}

【问题讨论】:

标签: javascript arrays function


【解决方案1】:

rest parameter syntax (...) 可用于创建提供给函数的所有(或部分)参数的数组。

function lunchClubLottery(...names) {
    var i = Math.floor(Math.random()*names.length)
    return names[i]
}

const name = lunchClubLottery("Billy","Timmy","Johnny")

console.log(name)

或者如果你想走老路,你可以使用arguments object(如果你没有使用胖箭头功能)。

在这里,我使用slicecall 将类似数组的arguments 对象转换为数组。

function lunchClubLottery() {
    const names = Array.prototype.slice.call(arguments)
    var i = Math.floor(Math.random()*names.length)
    return names[i]
}

const name = lunchClubLottery("Billy","Timmy","Johnny")

console.log(name)

【讨论】:

  • 谢谢你的解释,真的帮了我很大的忙。
猜你喜欢
  • 2014-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
  • 2023-03-04
  • 2018-09-12
相关资源
最近更新 更多