好吧,我是 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])];
现在我在数学前面的第二个 [ 我似乎无法弄清楚如何获取带有索引的数组的随机数。
我希望这是有道理的。显然我有岩石般的编码能力。
问题是您没有使用所选数组的长度,而是使用整个数组本身。
此外,您选择第二个维度的语法是错误的。
这是您问题的解决方案
const secondIndex = messages.message[chooseArray1][Math.floor(Math.random() * messages.message[chooseArray1].length)];
另请注意,变量 SecondIndex 包含要显示的文本,而不是实际索引。要仅获取索引,您可以使用:
Math.floor(Math.random() * messages.message[chooseArray1].length)
您可以创建一个函数来选择随机数组元素,然后使用它两次:
/** @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);