如何关联随机选取的数组问题与对应答案并生成表格展示?
如何关联随机选取的问题与对应答案?
嘿,我懂你的问题了——你现在把问题和答案拆成两个独立数组,但随机选问题的时候只存了问题文本,丢了它在原数组里的位置,所以没法对应上对应的答案对吧?其实核心思路很简单:我们要保存的是问题在原数组中的索引,而不是问题文本本身,这样就能通过索引同时拿到匹配的问题和答案了。
下面是具体的修改方案:
1. 生成随机不重复的索引
把你原来选问题字符串的逻辑,改成随机选原数组的索引,这样就能保留每个问题的位置信息:
// 用来存储选中的索引 let selectIndexes = []; // 获取原数组的总长度 const totalItems = myWords.length; // 随机选取10个不重复的索引 while(selectIndexes.length < 10) { const randomIndex = Math.floor(Math.random() * totalItems); // 检查索引是否已存在,避免重复选取 if(!selectIndexes.includes(randomIndex)) { selectIndexes.push(randomIndex); } }
2. 通过索引关联问题和答案
有了索引之后,我们就可以遍历这些索引,从两个数组里分别取出对应的问题和答案,完成配对:
// 存储配对好的问题-答案组合 const questionAnswerPairs = selectIndexes.map(index => ({ question: myWords[index], answer: myAnswers[index] }));
3. 输出表格格式的结果
最后我们可以把配对好的数据转换成你想要的表格形式输出:
// 输出表格表头 console.log("问题 | 答案"); console.log("--- | ---"); // 遍历配对数据,输出每一行内容 questionAnswerPairs.forEach(pair => { console.log(`${pair.question} | ${pair.answer}`); });
完整的示例代码
把所有部分整合起来,完整代码如下:
// Array for Questions var myWords = [ 'Test1', 'Test2', 'Test3', 'Test4', 'Test5', 'Test6', 'Test7', 'Test8', 'Test9', 'Test10', 'Test11', 'Test12', 'Test13', 'Test14', 'Test15' ] // Array for Answers var myAnswers = [ 'Answer1', 'Answer2', 'Answer3', 'Answer4', 'Answer5', 'Answer6', 'Answer7', 'Answer8', 'Answer9', 'Answer10', 'Answer11', 'Answer12', 'Answer13', 'Answer14', 'Answer15' ] // 生成随机不重复索引 let selectIndexes = []; const totalItems = myWords.length; while(selectIndexes.length < 10) { const randomIndex = Math.floor(Math.random() * totalItems); if(!selectIndexes.includes(randomIndex)) { selectIndexes.push(randomIndex); } } // 关联问题与答案 const questionAnswerPairs = selectIndexes.map(index => ({ question: myWords[index], answer: myAnswers[index] })); // 输出表格 console.log("问题 | 答案"); console.log("--- | ---"); questionAnswerPairs.forEach(pair => { console.log(`${pair.question} | ${pair.answer}`); });
这样运行之后,你就能得到每个问题和对应答案精准匹配的表格输出了。
内容的提问来源于stack exchange,提问作者Chunky Low
相关产品推荐
相关产品推荐

