最近看到了一个拼音猜成语小游戏,突发奇想试图将它改成猜单词的小游戏,小游戏没有后端所有数据都是来自前端,所以需要完整的词库,选取了考研英语词库,但是只在网上搜到了pdf版(是我没用),然后用在线工具转成了txt文件,变成了以下格式
一组英文一组中文这样,中英文行数对照
但是小游戏需要的数据结构是以下这样的(为了少改一点小游戏的代码)
所以自己写了一个demo来转换他们
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JS获取TXT文件内容</title>
</head>
<body>
<input type='file' accept='text/plain' onchange='openFile(event)'><br>
<div id="output"></div>
</body>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
var openFile = function (event) {
var input = event.target;
var reader = new FileReader();
var arr = []
reader.onload = function () {
if (reader.result) {
//显示文件内容
const item =reader.result.split('\n\n')//用两个换行分割每一组数据
console.log(item)
for(let eni = 0;eni<item.length;eni++){
console.log('eni',eni%2)
//双数为英文
if(eni%2==0){
var i = arr.length
console.log('ens',item[eni].split('\n'))
item[eni].split('\n').forEach(en => {
let obj = [[en], [en], ['1', '2', '3', '4'], [en]]
arr.push(obj)
})
}else{
//单数为中文
let zns = item[eni].split('\n')
console.log('zns',zns)
// zns.pop()
zns.forEach(zn=>{
console.log(zn)
// 中文
arr[i].push(zn)
i++
})
}
}
$("#output").html(JSON.stringify(arr));
// console.log(JSON.stringify(arr))
}
};
reader.readAsText(input.files[0]);
};
</script>
</html>
一键转换成功,很完美,需要注意的点是txt文件最后一行要换行,因为使用两个换行符分割,否则报错
小游戏已完成,下面是地址,用gitee pages部署
猜猜单词-考研版:猜猜单词