gpt4 book ai didi

javascript - 递归函数返回数组中的随机元素返回未定义

转载 作者:行者123 更新时间:2023-12-02 23:57:58 25 4
gpt4 key购买 nike

我正在尝试创建一个函数,该函数在数组中选择一个随机元素并返回它。如果选取的元素本身是一个数组,则该函数会将选取的数组传递回其自身,并从该新的嵌套数组中选取一个随机元素。如果我使用 console.log() 输出最终随机选择的字符串,它似乎可以工作,但该函数不断返回 undefined,我不确定为什么。它应该返回字符串

//picks a random entry from an array, recursively
function pickRandom(inputArr) {
//if the argument passed into the function is an array, then
if (Array.isArray(inputArr) === true) {
//pick a random element from that array, and run it back through the function
pickRandom(inputArr[Math.floor(Math.random() * inputArr.length)]);
//otherwise, just change the text content in the DOM to the argument and also return the argument
} else {
document.getElementById('textOutput').textContent = inputArr;
return inputArr;
}
}

var testArr =
[
["string 1", "string 2"],
"string 3"
]

pickRandom(testArr)

这是一个 JS fiddle ,每次运行它时,它都会将结果输出到 DOM 中的段落元素中: https://jsfiddle.net/oqwgvpyz/

有人可以告诉我为什么 pickRandom() 函数返回未定义吗?

最佳答案

您需要返回递归调用:

//picks a random entry from an array, recursively
function pickRandom(inputArr) {
//if the argument passed into the function is an array, then
if (Array.isArray(inputArr) === true) {
//pick a random element from that array, and run it back through the function
return pickRandom(inputArr[Math.floor(Math.random() * inputArr.length)]);
//otherwise, just change the text content in the DOM to the argument and also return the argument
} else {
document.getElementById('textOutput').textContent = inputArr;
return inputArr;
}
}

关于javascript - 递归函数返回数组中的随机元素返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55292006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com