2011-08-24 182 views
0

如何添加到JavaScript中的json數組?在javascript/jQuery中添加到json數組

我有從各種來源拉入數據,每個返回某種形式的JSON或類似,雖然每次都有不同的格式。我需要將它們全部整合到一個數組中,但我無法弄清楚如何去做。

第一組是一個這樣的數組:

[ 
Object {id="70", type="ab", dateadded="12345678"}, 
Object {id="85", type="ab", dateadded="87654321"}, ... more items ... 
] 

第二組被在來自Facebook拉動,並且是這樣的:

[ 
Object {id="12341234234", created_time="12345678"}, 
Object {id="567856785678", created_time="87654321"}, ... more items ... 
] 

所以,我需要改變第二設置爲'type',它有'dateadded'而不是'created_time',然後我需要將它全部放入一個數組中,以便按照'dateadded'排序。

我不知道該怎麼做!誰能幫忙?

謝謝!

+0

這是無效的JSON字符串,是嗎? – jantimon

回答

2

假設你有實際有效的JSON,而不是你在上面引述的內容:

var jsonOld = '[{"id":"70","type":"ab","dateadded":"12345678"},{"id":"85","type":"ab","dateadded":"87654321"}]', 
    jsonNew = '[{"id":"12341234234","created_time":"12345678"},{"id":"567856785678","created_time":"87654321"}]'; 

然後先解析這些值轉換成實際的JavaScript數組:

var mainArr = JSON.parse(jsonOld), 
    newArr = JSON.parse(jsonNew); 

(如果你已經有了實際的JavaScript數組,而不是然後跳過上述步驟。)

然後只是遍歷newArr並更改您需要更改的屬性:

for (var i = 0, il = newArr.length; i < il; i++) { 
    newArr[i].type = 'ab'; 
    newArr[i].dateadded = newArr[i].created_time; 
    delete newArr[i].created_time; 
} 

並連接到newArrmainArr

mainArr = mainArr.concat(newArr); 

和排序dateadded:

mainArr.sort(function(a, b) { return a.dateadded - b.dateadded; }); 

這將導致:

[{"id":"70","type":"ab","dateadded":"12345678"}, 
{"id":"12341234234","type":"ab","dateadded":"12345678"}, 
{"id":"85","type":"ab","dateadded":"87654321"}, 
{"id":"567856785678","type":"ab","dateadded":"87654321"}] 

See example

+0

謝謝!是的,我弄壞了上面的內容,但是數據是以你描述的形式出現的,所以這應該起作用。再次感謝。 – Sharon

4

使用第一個數組的push()方法:

// for each item in second array 
    firstArray.push(convert(item)); 

function convert(obj) { 
    // Convert obj into format compatible with first array and return it 
} 

希望這有助於。

+0

+1對我的問題更快,更簡潔的解決方案。簡潔FTW! – Rap

相關問題