如何在javascript/jquery中合并两个json对象?
我有一个如下所示的数据集:如何在javascript/jquery中合并两个json对象?,javascript,jquery,json,Javascript,Jquery,Json,我有一个如下所示的数据集: { "Stops": [ { "Name": "COLUMBIA RD NW + MINTWOOD PL NW", "Routes": [ "42", "43", "H1", "L2" ] } ] { "Predictions": [ { "DirectionText": "North
{
"Stops": [
{
"Name": "COLUMBIA RD NW + MINTWOOD PL NW",
"Routes": [
"42",
"43",
"H1",
"L2"
]
}
]
{
"Predictions": [
{
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 7,
"RouteID": "42"
},
{
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 25,
"RouteID": "42"
},
{
"DirectionText": "North to Chevy Chase Circle",
"Minutes": 32,
"RouteID": "L2"
},
{
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 36,
"RouteID": "42"
},
{
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 58,
"RouteID": "42"
},
{
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 69,
"RouteID": "42",
}
],
"StopName": "Columbia Rd Nw + Mintwood Pl Nw"
}
还有一个是这样的:
{
"Stops": [
{
"Name": "COLUMBIA RD NW + MINTWOOD PL NW",
"Routes": [
"42",
"43",
"H1",
"L2"
]
}
]
{
"Predictions": [
{
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 7,
"RouteID": "42"
},
{
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 25,
"RouteID": "42"
},
{
"DirectionText": "North to Chevy Chase Circle",
"Minutes": 32,
"RouteID": "L2"
},
{
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 36,
"RouteID": "42"
},
{
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 58,
"RouteID": "42"
},
{
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 69,
"RouteID": "42",
}
],
"StopName": "Columbia Rd Nw + Mintwood Pl Nw"
}
我想在第一组中结合路由ID上的数据,专门添加要设置的分钟数。因此,输出类似于:
{
"Stops": [
{
"Name": "COLUMBIA RD NW + MINTWOOD PL NW",
"Routes": [
{
"42": [
{
"Minutes": [7, 25,36,58,69]
}
],
"43": [
{
"Minutes": []
}
],
"H1":[
{
"Minutes": []
}
],
"L2": [
{
"Minutes": [32]
}
]
}
],
"StopID": "1001779"
}
]
}
我一直在研究如何编写一些javascript/jquery来完成这个合并。有什么想法吗?请看,这是更新后的代码,有空数组和所有内容。它是纯javascript的,因此不需要库。 我知道这只是一个粗糙的例子,但它很有效,我希望它能帮助你找到自己的方法。以后你可以改进它
var
stops = {
"Stops": [
{
"Lat": 38.92092,
"Lon": -77.043684,
"Name": "COLUMBIA RD NW + MINTWOOD PL NW",
"Routes": [
"42",
"43",
"H1",
"L2"
],
"StopID": "1001779"
}
]
},
predictions = {
"Predictions": [
{
"DirectionNum": "1",
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 7,
"RouteID": "42",
"VehicleID": "7136"
},
{
"DirectionNum": "1",
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 25,
"RouteID": "42",
"VehicleID": "7103"
},
{
"DirectionNum": "0",
"DirectionText": "North to Chevy Chase Circle",
"Minutes": 32,
"RouteID": "L2",
"VehicleID": "2207"
},
{
"DirectionNum": "1",
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 36,
"RouteID": "42",
"VehicleID": "7132"
},
{
"DirectionNum": "1",
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 58,
"RouteID": "42",
"VehicleID": "7111"
},
{
"DirectionNum": "1",
"DirectionText": "North to Mt Pleasant Via Adams Morgan",
"Minutes": 69,
"RouteID": "42",
"VehicleID": "7135"
}
],
"StopName": "Columbia Rd Nw + Mintwood Pl Nw"
};
var routeTimes = {};
for (var index in predictions.Predictions) {
if(!routeTimes.hasOwnProperty(predictions.Predictions[index].RouteID)) {
routeTimes[predictions.Predictions[index].RouteID] = [];
routeTimes[predictions.Predictions[index].RouteID].push(predictions.Predictions[index].Minutes);
} else {
routeTimes[predictions.Predictions[index].RouteID].push(predictions.Predictions[index].Minutes);
}
}
var
routes = stops.Stops[0].Routes,
routesVsMinutes = {};
for(var i in routes) {
if (!routesVsMinutes.hasOwnProperty(routes[i])) {
routesVsMinutes[routes[i]] = {Minutes: []};
}
if (routeTimes[routes[i]]) {
routesVsMinutes[routes[i]].Minutes = routeTimes[routes[i]];
}
}
stops.Stops[0].Routes = routesVsMinutes;
console.log(stops);
您可以使用:
与:
json1 = {"Stops":[...]}
json2 = {"Predictions:[...]}
@adeneo我怀疑
$.extend()
是否能胜任这项工作for
loop是一种正确的方法,我想。你的数据集在哪里?如果是JSON,那么您需要以某种方式读取它们,并将它们解析为Javascript对象。您需要将结果作为Javascript对象还是JSON?我猜这样的东西应该可以吗?请发布您到目前为止的内容…谢谢Vlad,这真的很接近!现在,下一个技巧是为没有预测的路由添加空白数组routeTimes@JasonRosenbaum我已经用更新的代码示例编辑了我的答案。看看。是的,看起来不错!非常感谢,这给了这个项目一个新的开始。Vlad,我的应用程序今天发布了,我想说声谢谢!我已经使用并编辑了你的代码,我在源代码中记下了你的名字。更多细节:@JasonRosenbaum哇,谢谢!这非常令人兴奋。祝你好运,很高兴我能帮助你。如果你的代码出现错误,Stops是一个数组,因此它应该是json1.Stops[0]。Routes。我没有测试你的代码,但这让我很吃惊。这是真的!你也可以在数组上做一个映射来添加其他案例,但我会保持停止[0]