使用lodash在JavaScript数组中进行字符串操作

使用lodash在JavaScript数组中进行字符串操作,javascript,jquery,regex,handlebars.js,lodash,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].[Mem

我有一个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]"]
}
其思想是根据“&”分割每个值,然后根据结果[0]分组

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

  • 循环遍历数组中的所有项,然后使用拆分&
  • 基于[dim].[mem]组合创建另一个列表。在本例中,列表将有[Dim3].[Mem1],[Dim1].[Mem1],[Dim2].[Mem1]
  • 现在有两个循环-一个用于唯一列表中的每个项目,另一个用于原始列表中的每个项目&检查项目是否为原始列表,是否包含唯一列表中的当前项目,然后形成字符串

  • 我如何使用“lodash”或任何其他基于JS的库来实现这一点,从而减少代码并使方法紧凑?

    事实上,是这样的:

    _.chain(arr)
    .invoke("split", ".&")
    .groupBy(0)
    .map(function(els) {
        return "{\n\t"+ _.invoke(els, "join", ".&").join(", ") + "\n}";
    })
    .value().join(",\n");
    

    你试过使用其他图书馆吗?你能和我们分享一下你的尝试吗?