2014-05-21 22 views
0

我想將我的uri轉換爲對象值,作爲成功級別,我使用冒號轉換並分解爲數組值。但我無法將這些轉化爲常規客體。任何人都建議我一個好方法。我正在與我一起起訴underscorejs。如何將包含對象字符串的數組轉換爲常規密鑰對象?

這裏是我的代碼:

var ar = ["id:1231", "currency:GBP"]; 

var outPut = _.map(ar, function(item){ 
    return '{' + item + '}'; 
}) 

console.log(outPut); //consoles as ["{id:1231}", "{currency:GBP}"] 

我怎樣才能得到這樣的:

var object = {id:1231, currency:GBP} 

是下劃線有任何在建方法呢?

回答

4

有幾種方法,你可以去這個問題,並強調提供幫助者爲他們。

一種方法是使用_.reduce增量鍵/值對添加到初始爲空的「結果」對象:

var obj = _.reduce(ar, function(result, item) { 
    var keyAndValue = item.split(":"); 
    result[keyAndValue[0]] = keyAndValue[1]; 
    return result; 
}, {}); 

需要注意的是,你可以做the same without Underscore,除非你有支持IE 8或更早版本。

+0

有效,但無法獲得正確結果。這裏是jsfiddle:http://jsfiddle.net/3gwebtrain/vaeRN/4/你可以在這裏更新。 – 3gwebtrain

+0

@ 3gwebtrain:對不起,我收到了'result'和'item'的錯誤命令。編輯答案以反映正確的順序。 – Jon

1

沒有任何第三方庫:

var output = {} ; 
var ar = ["id:1231", "currency:GBP"]; 
ar.forEach(function (item) { 
    var values = item.split(':') ; 
    output[values[0]] = values[1] ; 
}) ; 

輸出console.log(output)

Object {id: "1231", currency: "GBP"} 
+2

請不要爲......與規則排列 –

+0

@卡爾 - AndréGagnon使用爲何如此? – Sprottenwels

+1

@Sprottenwels:如果有任何屬性被盲目地設置在'Array.prototype'上(例如安裝某種polyfill),那麼你會重複這些。你不想那樣。 – Jon

0

下面是使用另一個版本的jQuery:

var newObj = {}; 
$.each(ar, function(i, v) { 
    var kv = v.split(":"); 
    newObj[ kv[0] ] = kv[ 1 ]; 
}); 
// newObj = {id:"1231", currency:"GBP"} 
相關問題