首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.split(",")每4项只有?

.split(",")每4项只有?
EN

Stack Overflow用户
提问于 2014-11-17 20:35:58
回答 5查看 360关注 0票数 2

我从一个字符串开始:

代码语言:javascript
复制
hidden = "a,b,c,d,e,f,g,h";

然后,我将(“,")字符串拆分为我可以尝试使用的东西:

代码语言:javascript
复制
array = hidden.split(",");

如果我退出console.log,结果是:

代码语言:javascript
复制
["a", "b", "c", "d", "e", "f", "g", "h"]

最后,我希望(只使用JS ):

代码语言:javascript
复制
["a,b,c,d","e,f,g,h"];

代码语言:javascript
复制
[["a,b,c,d"],["e,f,g,h"]];

谢谢!

编辑以显示我实际上正在尝试解决这个问题(不介意格式化):

代码语言:javascript
复制
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

再一次,不要介意我的格式,我在这里贴东西有困难:

代码语言:javascript
复制
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>";
}
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-11-17 20:56:00

具有简单循环的替代方式;

代码语言:javascript
复制
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' ]
票数 1
EN

Stack Overflow用户

发布于 2014-11-17 20:46:22

您可以使用正则表达式:

代码语言:javascript
复制
var hidden = "aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii";
console.log(hidden.match(/(([^,]+,){0,3}[^,]+)/g));

输出

代码语言:javascript
复制
["aaa,bbb,ccc,ddd", "eee,fff,ggg,hhh", "iii"]  

请参阅jsFiddle

票数 4
EN

Stack Overflow用户

发布于 2014-11-17 20:42:43

此代码接受数据的拆分版本,然后将其分组为4。

如果最后一组中没有确切的四个项,则将其添加到for循环之后。

您可以通过将join逻辑提取成一个简单的函数来减少重复,这样就不会重复代码(例如,如果您想用不同的字符连接,就必须更改这两行代码)。我把这个例子保留在程序上,这样你就可以得到大致的概念了。

代码语言:javascript
复制
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);

结果:

代码语言:javascript
复制
[ "a,b,c,d", "e,f,g,h" ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26981501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档