我看的是网页版的,就是JS文件里的核心代码。

作者使用了大量的中文变量名,请谨慎阅读,若有不适请立即离开

声明的String数组--组成文章的核心内容

let 主题 = "一天掉多少根头发";    //用户输入的文字(会围绕该文字“生成”文章)

let 论述 = [
    "现在,解决主题的问题,是非常非常重要的。 所以, ",
    "我们不得不面对一个非常尴尬的事",
    //略,这里有很多的这种论述   ];

  let 名人名言 = [
    "伏尔泰曾经说过,不经巨大的困难,不会有伟大的事业。这不禁令我深思",
    "富勒曾经说过,苦难磨炼一些人,也毁灭另一些人。这不禁令我深思",
            //略,这里有很多名人名言];

   let 后面垫话 = [
    "这不禁令我深思。 ",
    "带着这句话,我们还要更加慎重的审视这个问题: ",
    "这启发了我, ",];

    let 前面垫话 = [
    "曾经说过",
    "在不经意间这样说过",
];

上面的字符串数组是此程序的“基石”,也是可以通过修改其内容从而改变文章“内容”的重要备份

声明的几个函数--“合成”文章的核心算法

function 随便取一句(列表){   //30*0.8  = 24
    let 坐标 = Math.floor( Math.random() * 列表.length );  //向下取整(小于等于她的最接近他的整数)
    return 列表[坐标];    //数组中某一句
};
function 随便取一个数(最小值 = 0,最大值 = 100){
    let 数字 = Math.random()*( 最大值 - 最小值 ) + 最小值;   //math返回一个0.0-1.0之间的随机数
    return 数字;
}
function 来点名人名言(){
    let 名言 = 随便取一句(名人名言)   //名人名言是数组名
    名言 = 名言.replace("曾经说过", 随便取一句(前面垫话) )   //前面垫话和后面垫话均是数组名
    名言 = 名言.replace("这不禁令我深思", 随便取一句(后面垫话) )
    return 名言;
}
function 来点论述(){
    let 句子 = 随便取一句(论述);
    句子 = 句子.replace(RegExp("主题", "g"),主题);   //g表示全局匹配   //使用正则进行替换,有点不懂
    return 句子;
}
function 增加段落(章节){
    if(章节[章节.length-1] === " "){
        章节 = 章节.slice(0,-2)     //去掉章节后面的多余的字符  ,便于后面再后面增加句号。
    }
    return "  " + 章节 + "。 "
}

核心函数

function 生成文章(){
    let 文章 = []
    for(let 空 in 主题){   //遍历字符串的每个元素(可能没有用到空,他只是用于控制循环的次数
        let 章节 = "";
        let 章节长度 = 0;   //章节长度值得是字符的个数
        while( 章节长度 < 6000 ){
            //这个循环并不是只添加一个段落,当循环结束后会添加很多个段落。
            //当添加的文字总数达到6000时会跳出循环,
            let 随机数 = 随便取一个数();
            if(随机数 < 5 && 章节.length > 200){
                章节 = 增加段落(章节);    //增加章节(章节长度>200时就添加章节了)。
                文章.push(章节);
                章节 = "";    //<5的随机数进行的操作    //有很小的几率添加到文章中
            }else if(随机数 < 20){
                let 句子 = 来点名人名言();
                章节长度 = 章节长度 + 句子.length;
                章节 = 章节 + 句子;   //>5 且<20的随机数进行的操作    //添加名人名言:有五分之一的几率
            }else{
                let 句子 = 来点论述();
                章节长度 = 章节长度 + 句子.length;
                章节 = 章节 + 句子;    //大于等于20的随机数进行的操作
            }
        }
        章节 = 增加段落(章节);
        文章.push(章节);
    }
    return 文章.join("\n");
}

最后,是程序的启动开关

console.log(生成文章())

​ 2019年11月6日晚 20:52

12-29 12:20