200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 一个可以接到“为所欲为”的成语接龙生成器

一个可以接到“为所欲为”的成语接龙生成器

时间:2019-12-20 08:26:57

相关推荐

一个可以接到“为所欲为”的成语接龙生成器

“为所欲为”成语接龙生成器

介绍

输入任意成语或汉字,会以最后一个字开头进行成语接龙,直到最后一个成语是“为所欲为”为止。

实现逻辑

技术栈

vueelementUI

依赖

cncharcnchar-idiom

cnchar 文档

动手搬砖

根据cnchar 文档安装上述两项依赖项

npm i cncharnpm i cnchar-idiom

导入

import cnchar from 'cnchar'import 'cnchar-idiom'

思路

第一步:截取最后一个汉字,并获取该汉字的拼音;

第二步:获取所有以该拼音开头的成语数组;

第三步:遍历该数组,判断这个数组中最后一个字的拼音是否是“wei”,如果有“wei”结尾的成语,那么就结束;如果该数组中所有成语均没有以“wei”结尾,那么随机选取一个成语,重复第一步。

代码实现

// 获取最后一个汉字的拼音getLastWordSpell(s) {s = s || ''return cnchar.spell(s.replace(/^(.*[n])*.*(.|n)$/g, '$2')).toLowerCase()}

// 主要函数generator(lastWordSpell) {// 获取所有以该拼音开头的成语数组const tempResArr = cnchar.idiom(lastWordSpell, 'spell')if (!tempResArr.length) {// 没有以这个拼音开头的成语this.$message({type: 'warning',message: '矮鸭'})this.result = this.resultArr.join(' - ')return}// 判断最后一个字的拼音是否是“wei”const lastOneIsWei = tempResArr.some(el => {if (this.getLastWordSpell(el) === 'wei') {this.resultArr.push(el)}return this.getLastWordSpell(el) === 'wei'})if (lastOneIsWei) {// 如果是,那么就结束this.resultArr.push('为所欲为')this.result = this.resultArr.join(' - ')} else {// 如果不是,就在数组中随机找一个,然后递归const randomNum = this.getRandomNum(0, tempResArr.length)this.resultArr.push(tempResArr[randomNum])this.generator(this.getLastWordSpell(tempResArr[randomNum]))}}

// 生成从minNum到maxNum的随机数getRandomNum(minNum, maxNum) {switch (arguments.length) {case 1:return parseInt(Math.random() * minNum + 1, 10)case 2:return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)default:return 0}}

代码库

wsyw-idiom-solitaire

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。