javascript - 使用 lodah\handlebar 模板或任何其他 JS 库将 javascript 数组列表格式化为特定格式

标签 javascript jquery regex handlebars.js lodash

我有一个如下所示的 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"]
}

我可以通过以下方式做到这一点:

  1. 循环遍历数组中的所有项目,然后用 .& 分割它们
  2. 根据 [dim].[mem] 组合创建另一个列表。在我们的例子中,列表将包含 [Dim3].[Mem1]、[Dim1].[Mem1]、[Dim2].[Mem1]。
  3. 现在有两个循环 - 一个循环用于唯一列表中的每个项目,一个循环用于原始列表中的每个项目,并检查原始列表中的项目是否包含唯一列表中的当前项目,然后形成字符串。

有没有办法借助模板或 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/

相关文章:

javascript - 将 Node 应用程序传输到服务器

javascript - 单击 Javascript 时返回单元格的 ID

javascript - 将 ipywidgets 导出到网站

python - 即使应触发后视,正则表达式也会获取值

ruby - 如何从全名中提取名字和姓氏

javascript - 我想在宽度不为0时为div设置动画

jquery - 图像调整大小和裁剪以适合父 div

jquery - 如何删除父tr

javascript - 如何在 AngularJS 中提交后重置表单

python - TypeError : expected string or buffer with re. 匹配和 matchObj.group()