我从一个字符串开始:
hidden = "a,b,c,d,e,f,g,h";然后,我将(“,")字符串拆分为我可以尝试使用的东西:
array = hidden.split(",");如果我退出console.log,结果是:
["a", "b", "c", "d", "e", "f", "g", "h"]最后,我希望(只使用JS ):
["a,b,c,d","e,f,g,h"];或
[["a,b,c,d"],["e,f,g,h"]];谢谢!
编辑以显示我实际上正在尝试解决这个问题(不介意格式化):
if (currentPage === "view-bills.php")
{
var str = "";
hidden = document.getElementById("billItems");
array = hidden.value.split(",");
for (var i=0;i<array.length;i++)
{
str += "<option>"+ array[i] +"</option>";
}
var itemsAmt = document.getElementById("items").value;
document.getElementById("displayItems").innerHTML = "<optgroup label='"+ itemsAmt +" items'>" + str + "</optgroup>";
}更新:
但是,问题已经解决了,我想向您展示我的项目的结果(这次访问类而不是id):
http://i.imgur.com/umjhGPP.png

再一次,不要介意我的格式,我在这里贴东西有困难:
if (currentPage === "view-bills.php")
{
// Add items to select box
hidden = document.getElementsByClassName("billItems");
for (var n=0;n<hidden.length;n++)
{
array = hidden[n].value.split(",");
groups = [];
for(var i=0;i<array.length;i+=5)
{
groups.push(array.slice(i,i+5).join(','))
}
var str = "";
for (var j=0;j<groups.length;j++)
{
str += "<option>"+ groups[j] +"</option>";
}
var itemsAmt = document.getElementsByClassName("items")[n].value;
document.getElementsByClassName("displayItems")[n].innerHTML = "<optgroup label='"+ itemsAmt +" items'>" + str + "</optgroup>";
}
}发布于 2014-11-17 20:56:00
具有简单循环的替代方式;
hidden = "a,b,c,d,e,f,g";
arr = hidden.split(",");
groups = []
for(var i = 0; i < arr.length; i+=4)
groups.push(arr.slice(i,i+4).join(','))
console.log(groups)
> [ 'a,b,c,d', 'e,f,g' ]发布于 2014-11-17 20:46:22
您可以使用正则表达式:
var hidden = "aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii";
console.log(hidden.match(/(([^,]+,){0,3}[^,]+)/g));输出
["aaa,bbb,ccc,ddd", "eee,fff,ggg,hhh", "iii"] 请参阅jsFiddle
发布于 2014-11-17 20:42:43
此代码接受数据的拆分版本,然后将其分组为4。
如果最后一组中没有确切的四个项,则将其添加到for循环之后。
您可以通过将join逻辑提取成一个简单的函数来减少重复,这样就不会重复代码(例如,如果您想用不同的字符连接,就必须更改这两行代码)。我把这个例子保留在程序上,这样你就可以得到大致的概念了。
var hidden = "a,b,c,d,e,f,g,h";
var allItems = hidden.split(',');
var groups = [];
var currentGroup = [];
for (var i = 0; i < allItems.length; i++) {
currentGroup.push(allItems[i]);
if (currentGroup.length === 4) {
groups.push(currentGroup.join(','));
currentGroup = [];
}
}
if (currentGroup.length > 0) {
groups.push(currentGroup.join(','));
}
console.log(groups);结果:
[ "a,b,c,d", "e,f,g,h" ]https://stackoverflow.com/questions/26981501
复制相似问题