我有一个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以获取我的解决方案
答案 0 :(得分:1)
您只需使用Array.map
和Array.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
答案 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)