2016-08-15 36 views
1

如何在Javascript中的另一個對象內創建逗號分隔的對象列表?至少我認爲我正在努力做到這一點。如何動態地將Javascript對象列表分割成逗號分隔的對象

我在尋找最終的結果是這樣的:

var endresult = { 'MD': { fill: 'yellow' }, 'VA': { fill: 'blue' }, 'IL': { fill: 'red' }, 'SC': { fill: 'green' } }; 

我使用數組,創建類,Array.join()試過了,創建多個字符串和連接。我也嘗試創建關鍵對象值對,但我似乎無法成功創建一個。

一般的目標是獲取狀態和顏色變量的列表,將它們傳遞給一個key類對象值對,然後將這個新的實例化對象添加到列表中,然後將該列表傳遞給變量endresult與示例代碼提供的語法相同。

在此先感謝(我有一種感覺,我即將受到教育)。

+2

請發佈您想要變換的數據示例 –

+0

這與jQuery有什麼關係?請編輯問題,提供所有需要的信息,並確保我們在同一頁面上,以便得到適當的答案。 –

+0

@RobertRocha我在想,jQuery可以用來幫助解決這個問題。 – BinaryBoss

回答

3

給定兩個陣列,一個與美國,另一個顏色的名字,你可以使用這個函數來獲取最終結果:

function combine(states, colors) { 
 
    return colors.reduce((result, color, i) => 
 
     Object.assign(result, { [states[i]]: { fill: color } }), {}); 
 
    
 
} 
 

 
// sample data 
 
var states = ['MD', 'VA', 'IL', 'SC']; 
 
var colors = ['yellow', 'blue', 'red', 'green']; 
 

 
// convert 
 
var result = combine(states, colors); 
 

 
// output 
 
console.log(result);

+0

這個答案讓我朝着正確的方向前進。謝謝! var StateStyles = {}; $ .each(data,function(i,item){ StateStyles [item.state] = {fill:item.color}; ); – BinaryBoss

+0

不客氣。如果我知道'data'的結構,我會定製解決方案。但很高興看到你得到它;-) – trincot

+0

而我認爲這是我遇到問題描述問題。我不知道一個對象的結構可以定義鍵。 – BinaryBoss

0
var colors = {LA: {fill: 'blue'}}; 
colors['MA'] = {fill: 'red'}; 
//colors is now === {LA: {fill: 'blue'}, MA: {fill: 'red'}}; 

請記住,你的時候使用Object [key]表示法,該鍵最終需要是一個字符串,以便按照您的意圖工作。

但是,如果「填充」是您打算保留的唯一值,則可以通過簡單地刪除{fill: 'color'}對象並執行{LA: 'blue', ...}來簡化對象。

參見:

Mozilla Property accessors docs

0
var StateStyles = {}; 

$.each(data, function (i, item) { 
    StateStyles[item.state] = { fill: item.color }; 
); 

我感謝幫助大家都是從trincot和安德魯·巴賓少了什麼教訓;我必須使用括號來分配一個鍵。現在我有一個包含多個對象的對象。不知道可以做到。

相關問題