-8

我有下面的字符串需要在 5 个逗号分隔值之后分成多个数组。然后我需要使用脚本将每个数组值放入文本框值。我尝试了以下代码来拆分并分配给数组但不工作。有什么办法可以解决这个问题吗? <%=ab%>是包含以下代码的 JavaScript 变量。

[768.234.232, 768.234.232, 574,10-10-2012, 10-10-2012, 768.234.232, 768.234.232, 987, 10-10-2012, 10-10-2012]

function functionOne() {
    var list = "<%=ab%>";
    var ab = new Array();
    var i = 0;
    for (i = 0; i < 10; i++) {
        ab[i] = list.split(",", 3);
        alert(ab[i]);
    }
}
4

2 回答 2

1

“需要在5个逗号分隔值后分成多个数组”

您似乎在说结果应该是一个包含五个值的数组,然后是一个包含下五个值的第二个数组,等等。如果是这样,您可以执行以下操作:

var list = "<%=ab%>";
list = list.slice(1,-1);                 // remove the enclosing []
var allValues = list.split(/\s*,\s*/);   // split on comma with optional whitespace
var a = [];
for (var i = 0; i < allValues.length; i+=5) {
    a.push( allValues.slice(i, i+5<=allValues.length ? i+5 : allValues.length) );
}

运行上述后,a将是包含其他数组的数组。a[0]是前五个项目的数组,因此,例如,a[0][2]是第三个项目。a[1]是接下来五个项目的数组。如果原始列表中有十个以上的项目,那么a[2]将是接下来五个的数组,依此类推。如果项目的总数不能被 5 整除,那么最后一个数组将包含余数。

演示:http: //jsfiddle.net/9xAxz/

“然后我需要将每个数组值放入文本框值”

嗯...这是否意味着每个文本框一个项目?如果是这样,为什么要在五个值之后进行划分?你的意思是每个文本框五个项目?无论哪种方式,您都在谈论动态创建文本框吗?如果是这样,您可以按照上面的代码执行以下操作:

var tb;
for (i = 0; i < a.length; i++) {
    tb = document.createElement('input');
    tb.value = a[i].join(", ");
    document.body.appendChild(tb);
}

演示:http: //jsfiddle.net/9xAxz/1/

如果我完全不符合上述任何一项,那么...考虑编辑您的问题以使其更清楚。我想我应该在回答之前先澄清一下,但请更新问题以显示该输入所需的输出。

于 2013-07-02T13:15:05.540 回答
0
function functionOne() {
    var list = "<%=ab%>".split(/,\s?/g);

    for (var i = 0; i < list.length; i++) {
        t = document.createElement('input');
        t.type = 'text';
        t.value = list[i];
        document.body.appendChild(t);
    }
}
functionOne();

http://jsfiddle.net/WJPHt/1/

于 2013-07-02T13:08:22.853 回答