将数组中的数组作为参数输入的函数

时间:2014-04-20 21:04:05

标签: javascript arrays null

    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时,它会导致错误,这是为什么?

2 个答案:

答案 0 :(得分:0)

  • 创建一个名为“word”('')
  • 的空字符串
  • 一次添加一个字母('L','Lo','Lor','Lore','Lorem')
  • Word结束了,所以推送到数组('Lorem')
  • 将字重置为null(null)
  • 一次添加一个字母('nulli','nullip','nullips','nullipsu','nullipsum')

您要做的是重置为空字符串,您不需要null。

答案 1 :(得分:0)

如果我已正确理解您的问题,您需要从字符串中创建一个单词数组。一种简单的方法是使用String.split方法,并作为split的参数,传递RegExp。像这样:

var array = text.split(/[\W]+/);
上面的

split通过在任何地方拆分text来创建一个新数组,其中包含的RegExp在text中遇到一个或多个不是字母数字(或下划线)的连续字符。

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

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

join()是&#34;相反&#34; split的方法,它从数组创建一个字符串。

A live demo at jsFddle