2011-08-24 195 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

相关问题