如果我使用对象中的多个数组,如何获得随机数组?

问题描述 投票:0回答:2

好吧,我是 Javascript 新手。我创建了一个包含 3 个独立数组的对象。

const messages = {
  message:[
   ["joke1","joke2","joke3"],
   ["tease1","tease2","tease3"],
   ["boost1","boost2","boost3"]
};

现在我需要在用户每次登录时获取随机消息。例如:

 messages.message[0][2] or messages.message[2][0]

我无法让这段代码的第二部分工作。

第一部分很简单。

我能够从数组中获取第一个随机数。 放入变量 ChooseArray1

这就是我挣扎的地方。

const secondIndex = messages.message[chooseArray1[Math.floor(Math.random() * messages.message[chooseArray1])];

现在我在数学前面的第二个 [ 我似乎无法弄清楚如何获取带有索引的数组的随机数。

我希望这是有道理的。显然我有岩石般的编码能力。

arrays random
2个回答
0
投票

问题是您没有使用所选数组的长度,而是使用整个数组本身。

此外,您选择第二个维度的语法是错误的。

这是您问题的解决方案

const secondIndex = messages.message[chooseArray1][Math.floor(Math.random() * messages.message[chooseArray1].length)];

另请注意,变量 SecondIndex 包含要显示的文本,而不是实际索引。要仅获取索引,您可以使用:

Math.floor(Math.random() * messages.message[chooseArray1].length)


0
投票

您可以创建一个函数来选择随机数组元素,然后使用它两次:

Playground 中的代码

/** @type {<T>(array: ReadonlyArray<T>) => T} */
function getRandomElement(array) {
  return array[Math.floor(Math.random() * array.length)];
}

const messages = {
  message: [
    ["joke1", "joke2", "joke3"],
    ["tease1", "tease2", "tease3"],
    ["boost1", "boost2", "boost3"],
  ],
};

// One of the strings from one of the arrays in the array at messages.message:
const randomString = getRandomElement(getRandomElement(messages.message));

console.log(randomString);

© www.soinside.com 2019 - 2024. All rights reserved.