2013-11-15 36 views
1

我有以下陣列:將數組組合到一個對象中?

dates = ['2013-06-01', '2013-07-01', '2013-08-01', '2013-09-01', '2013-10-01', '2013-11-01'] 
values = [20, 10, 5, 5, 20, 25] 

我需要做的就是把它們合併成這種格式:

data: [ 
    { date: '2013-06-01', value: 20 }, 
    { date: '2013-07-01', value: 10 }, 
    { date: '2013-08-01', value: 5 }, 
    { date: '2013-09-01', value: 5 }, 
    { date: '2013-10-01', value: 20 }, 
    { date: '2013-11-01', value: 25 } 
] 
+3

這似乎與JSON沒有任何關係。你試過什麼了?你知道如何迭代數組嗎? –

+0

首先想想如何在javascript中合併數據結構。 JSON只是一種序列化格式,並且是最後一步。你能顯示你試圖將這些數組合併到一個對象數組中的代碼嗎? –

+0

看看這個問題:http://stackoverflow.com/questions/4856717/javascript-equivalent-of-pythons-zip-function – aga

回答

3

假設他們總是相同的長度:

var data = []; 
for (var i = 0; i < dates.length; i++) { 
    var obj = {} 
    obj.date = dates[i]; 
    obj.value = values[i]; 
    data.push(obj); 
} 
-1

如果jQuery是一個選項,你可以試試這個:

http://api.jquery.com/serializeArray/

+0

'serializeArray'用於提取一組表單控件的值到一個陣列。我不明白這與此有關。 –

0

嗯。我相信你已經想到了這一點。使用jquery,如果你不使用這個道歉。

data = jQuery.map(dates,function(v,i){ 
     return {'date': i, 'value': values[i]} 
} 
+0

這不會產生OP想要的內容。你在哪裏使用'values'? –

+0

我遲到了,不記得數組名稱在哪裏。我編輯了正確的 –

+0

但它仍然不正確。我想你想''日期':v'代替。 –

0
var data = { 
    data: dates.map(function(x, i) { 
    return { date: x, value: values[i] }; 
    }) 
}; 

Array.prototype.map是ECMAScript的第5版和< IE9無法正常工作。 對於舊版瀏覽器我們this polyfill

相關問題