函数,该函数由作为参数输入的单词组成数组

Function that makes an array out of words entered as an argument

本文关键字:函数 单词组 数组 输入 参数      更新时间:2023-09-26
    function makeArray(text){
            var array = [];
            var word = null;
            for(var i = 0; i<text.length; i++){
            if (word == null) {
                word = "";
                    if(text[i] != "," && text[i] != " " && text[i] != "." && text[i] != "   "){
                        word += text[i];
                    }
                    else{
                        array.push(word);
                        word = null;
                    }
                }
                return array;
            }
var array = makeArray("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc varius urna sed pede. Suspendisse sit amet lacus. Vivamus consectetuer fringilla ligula. Nunc metus lorem, pretium adipiscing, sollicitudin nec, ultrices quis, nulla. Phasellus nec nulla a eros adipiscing ultrices. Nulla fermentum lectus. Pellentesque ac risus eu massa auctor bibendum. Cras vulputate, nisi eget gravida condimentum, nisl justo tincidunt magna, rutrum imperdiet dui justo vel risus. Donec sit amet pede. Etiam facilisis mauris vitae risus. Ut a neque. Suspendisse augue est, elementum nec, lobortis vel, pulvinar vitae, sapien. Curabitur venenatis enim sit amet sapien. Mauris fermentum interdum eros. Mauris feugiat adipiscing nisl. Donec non nunc. Donec ante enim, eg."
for(var i = 0; i<array.length;i++){
        document.write(i+ ". "+array[i]+"<br />");
    }

我正在尝试构建一个程序,它可以占用一段很长的文本,并告诉你一个单词在整个文本中是否只出现一次。正如你所看到的,我还没有编写其余的代码,但当我运行它来测试它是否能成功返回数组中的每个项目时,与此代码相比,web浏览器只显示一个空白屏幕

function makeArray(text){
        var array = [];
        var word = "";
        for(var i = 0; i<text.length; i++){
            if(text[i] != "," && text[i] != " "&& text[i] != "." && text[i] != "    "){
                word += text[i];
            }
            else{
                array.push(word);
                word = "";
            }
        }
        return array;
    }
for(var i = 0; i<array.length;i++){
            document.write(i+ ". "+array[i]+"<br />");
        }

它可以正常工作,但如果出现诸如"."(句点+空格(之类的字符序列,它将向数组中添加一个值为""的项,因为是word = "";。我试图通过使用null类型来消除这种情况,因为w3schools.com说"可以通过将值设置为null来清空变量",但当我使用null类型时,会导致错误,为什么会这样?

  • 创建一个名为"word"(''(的空字符串
  • 一次添加一个字母("L"、"o"、"or"、"ore"、"orem"(
  • 单词结束,所以推到数组('Lorem'(
  • 将单词重置为null(null(
  • 在其中添加字母,一次添加一个("ulli"、"ullip"、"nulips"、"Nulipsu"、"anulipsum"(

您要做的是重新设置为空字符串,您不希望为null。

如果我正确理解了你的问题,你想从字符串中创建一个单词数组。一个简单的方法是使用String.split方法,并将RegExp作为split的参数。类似这样的东西:

var array = text.split(/['W]+/);

上面的split通过在各处拆分text来创建一个新数组,其中包含的RegExp与text中的一个或多个非字母数字(或下划线(的顺序字符相遇。

空白屏幕显示的内容,是因为您在解析页面后使用document.write()。这样做将创建一个新文档,并且当前文档的所有内容都将丢失。相反,在页面上创建一个带有id的元素,并执行以下操作:

document.getElementById('id_of_an_element').innerHTML = array.join('<br />');

join()是一个与split"相反"的方法,它从数组中创建一个字符串。

jsFddle的现场演示。