我试图做一个句子,从数组中两次选择随机项。第一项被暂时从数组中删除,因此无法再次选择,然后第二项也被随机选择并添加到句子中。然后,要重置它,以便以后可以再次执行此操作,我尝试将第一个选择的项重新添加到其初始数组中。
问题是,当我执行此操作时,正如我希望的那样,selectedWord1在句子中显示为字符串,但是selectedWord2却显示了索引号。
array = ["word","another word", "yet another word"];
/* put a random word from the array in its own value and then
remove it from the array so it can't be chosen in next step */
let chosenWord1 = array.splice(Math.random() * array.length, 1)[0];
/* pick another random word from the same, altered array */
let chosenWord2 = Math.floor(Math.random() * array.length);
/* a function that puts a sentence on the webpage concatenating the strings
from chosenWord1 and chosenWord2 goes here. then... */
/* add back the previously removed word so this process can repeat again
with the same items in the array as there was before anything was done to it */
array.splice(1,0,chosenWord1);
另外,如果我可以通过一些更明智的方式来构建此结构,请告诉我。我对此还很陌生。
我不知道这是否是您所需要的,但这会重复提取两个随机词,而不会从原始数组中取出它们。for循环用于显示如何使用不同的单词。
const array = ["word", "another word", "yet another word"];
const randomNumber = (key) => Math.floor(Math.random() * key);
for (let i = 0; i < 10; i++) {
const { [randomNumber(array.length)]: wordOne, ...rest } = array;
const { [randomNumber(array.length - 1)]: wordTwo } = Object.values(rest);
console.log(`${wordOne} and ${wordTwo}`);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句