将JS数组格式化为特定字符串

时间:2015-02-11 13:09:51

标签: javascript jquery underscore.js handlebars.js lodash

我有一个Javascript数组

var arr = ['[dim].[att].&[123]','[dim].[att5].&[123]','[dim4].[att].&[123]','[dim3].[att].&[123]','[dim].[att].&[222]'] 
从这个数组

我需要产生这样的输出:

var str = " 'dim'[att] = 123 || 'dim'[att] = 222 , 'dim'[att5] = 123 , 'dim4'[att] = 123 , 'dim3'[att] = 123 ";

我首先需要按.&拆分数组中的每个值,然后我需要按结果数组的index 0对所有项进行分组。所以在这种情况下,我会将[dim].[att].&[123]& [dim].[att].&[222]因为[dim].[att]

从这些项目中,我现在需要按].拆分并生成需要的输出,以便[dim].[att].&[123] 变为 'dim'[att] = 123

我不想为此目的使用多个for循环。我已经准备好了解决方案。到目前为止,我能够对项目进行分组,但不确定如何生成所需的输出。检查此fiddle以获取我的解决方案

2 个答案:

答案 0 :(得分:1)

您只需使用Array.mapArray.join

即可
var str = arr.map(function(s){
    var a = s.match(/\w+/g);
    return "'" + a[0] + "'[" + a[1] + "] = " + a[2];
}).join("||");

在上文中,我们使用s.match(/\w+/g)将我们想要的三个部分放入一个数组中,然后以我们想要的格式返回。

此外,最后,调用Array.join ||作为String

DEMO

答案 1 :(得分:0)

我一直在寻找这个;以下代码和DEMO

var arr = ['[dim].[att].&[123]', '[dim].[att5].&[123]', '[dim4].[att].&[123]', '[dim3].[att].&[123]', '[dim].[att].&[222]']

var res = _.chain(arr)
    .groupBy(function (x) {
    return x.match(/.+?\.&/i)[0];
})
.map(function(y) {
    return _.map(y, function (z) {
        var a = z.match(/\w+/g);
        return "'" + a[0] + "'[" + a[1] + "] = " + a[2];
    }).join(" || ");
})
    .value().join(", ");

console.log(res)