根据给定的数字切割数组

时间:2014-01-06 07:44:02

标签: javascript html arrays

我在根据用户输入拆分数组时遇到了一些问题。我有一个文本区域,用户将在其中输入一篇文章和一个输入框,其中一个人可以输入一个作为分割基础的数字。假设用户输入“3”,整篇文章将分为每段3个句子。

到目前为止我有这个HTML,

<textarea id="essay"></textarea>
<input type="text" onkeypress="return show_paragraph(event)" id="input" />

<div id="questionDiv"></div>

和一个完成所有功能的功能。但是切片只适用于第一段,意思是,如果我输入一篇由8个句子组成的文章,我想在每3个句子中切片,例如,我只得到两段,第一段有3个句子,第二段有5个句子,我应该有3个段落,3-3-2个句子..

function show_paragraph(e){
    var numSentences = $("#input").val();
    var essay= $("#essay").val();
    if (e.keyCode == 13 || e.which == 13) {
        var sentence_list = essay.split(". "); //array of sentences
        var sentence_results = "";          
        var i,j,paragraph;
            var chunk = numSentences;

        for (i=0,j=sentence_list.length; i<j; i+=chunk) {
            paragraph = sentence_list.slice(i,i+chunk);
            sentence_results += '<div id="sentenceDiv" >';
            sentence_results += '<h4 id="paragraph'+i+'">'+paragraph+'</h4>';
            sentence_results += '</div>';
        }

        $("#questionDiv").html(sentence_results);

        return false;
    }
}

我似乎无法为每个句子返回句点(。)。

感谢您的帮助.. =)

1 个答案:

答案 0 :(得分:0)

非常有趣。你的逻辑是正确的,你只需修改这2行:

而不是

var chunk = numSentences;

执行:

var chunk = parseInt(numSentences, 10);

如果没有,当你在for中做'+'时,它会连接而不是添加。

而不是:

paragraph = sentence_list.slice(i,i+chunk);

执行:

paragraph = sentence_list.slice(i,i+chunk).join(". ");

所以你得到了回归的时间。

经测试,它有效:)。

来自玻利维亚拉巴斯的欢呼声