我有一个如下所示的 JavaScript 数组
var arr = ["[Dim1].[Mem1].&1","[Dim2].[Mem1].&2","[Dim1].[Mem1].&5","[Dim2].[Mem1].&77","[Dim3].[Mem1].&1"]
我想要什么:我想要一个这种格式的字符串
{
[Dim1].[Mem1].&1, [Dim1].[Mem1].&5
},
{
[Dim2].[Mem1].&2, [Dim2].[Mem1].&77
},
{
[Dim3].[Mem1].&1"]
}
我可以通过以下方式做到这一点:
- 循环遍历数组中的所有项目,然后用 .& 分割它们
- 根据 [dim].[mem] 组合创建另一个列表。在我们的例子中,列表将包含 [Dim3].[Mem1]、[Dim1].[Mem1]、[Dim2].[Mem1]。
- 现在有两个循环 - 一个循环用于唯一列表中的每个项目,一个循环用于原始列表中的每个项目,并检查原始列表中的项目是否包含唯一列表中的当前项目,然后形成字符串。
有没有办法借助模板或 Handlebars 模板或任何其他 JavaScript 库来实现此目的?
最佳答案
您可以使用_.groupBy
和正则表达式,对元素进行分组
var regExp = /\[(.*?)\]/g;
console.log(_.groupBy(arr, function(currentItem) {
var match, result = "";
while ((match = regExp.exec(currentItem)) !== null) {
result += match[1];
}
return result;
}));
输出
{ Dim1Mem1: [ '[Dim1].[Mem1].&1', '[Dim1].[Mem1].&5' ],
Dim2Mem1: [ '[Dim2].[Mem1].&2', '[Dim2].[Mem1].&77' ],
Dim3Mem1: [ '[Dim3].[Mem1].&1' ] }
关于javascript - 使用 lodah\handlebar 模板或任何其他 JS 库将 javascript 数组列表格式化为特定格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22961530/