2015-02-11 78 views
-1

我從這個數組我需要產生這樣的輸出Javascript數組格式化JS數組轉換爲特定的字符串

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]

從這些項目,我會組[dim].[att].&[123] & [dim].[att].&[222],現在我需要通過].分裂和產生需要輸出,使得[dim].[att].&[123]成爲'dim'[att] = 123

我不想爲此使用多個for循環。我已經準備好了這個解決方案。到目前爲止,我可以將項目分組,但不知道如何生成所需的輸出。檢查此fiddle爲我解決

回答

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

+0

謝謝您的回覆。看看你的解決方案,我不確定,你是如何分割值的?s.match(/ \ w +/g);''是什麼用法。如果我只是運行你的解決方案,我沒有得到所需的輸出。 – SharpCoder 2015-02-11 13:36:09

+0

@SharpCoder這是一個小錯字。現在它應該工作 – 2015-02-11 13:46:26

+0

謝謝你的幫助。你的回答是部分正確的。我正在投票尋求你的幫助。只有當成員來自同一[dim]。[Att]時才應用'||'。 – SharpCoder 2015-02-12 08:11:03

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)