【问题标题】:How to combine the data from 2 json files with jQuery如何将来自 2 个 json 文件的数据与 jQuery 结合起来
【发布时间】:2015-08-18 19:40:00
【问题描述】:

我正在尝试使用来自两个单独的 json 文件的数据创建 Google 地图。我正在尝试使用 jquery/javascript 组合这两个文件,然后通过 Google Maps API 处理生成的对象数组。

我尝试过 $.extend、$.merge、concat,甚至尝试将数据推送到一个空数组中,但在每种情况下,只有第一组数据出现在地图上(尽管我可以如果我用 console.log 显示两组数据,请分别查看它们)。

我一定是做错了什么,但我没有看到。我的代码的相关部分如下(我尝试过的东西被注释掉了)。任何建议将不胜感激。

j$.when(
    j$.getJSON('mapData1.js'),
    j$.getJSON('mapData2.js')
).done(function(data1, data2) {
    var d1 = data1;
    var d2 = data2;
    var d3 = [];
    d3.push(d1[0]);
    d3.push(d2[0]);
    //var d3 = j$.extend({},d1,d2);
    //var d3 = j$.merge(d1,d2);
    //var d3 = d1.concat(d2);
    var data = d3[0];

    //code to process data with Google Maps API
});

我的 json 文件看起来像这样(但包含更多项目):

[
    {
        "ID": "a001a000002o4iZAAQ",
        "NAME": "Atlanta",
        "Address": "123 State Street",
        "City": "Atlanta",
        "StateAbbreviation": "GA",
        "SF": "",
        "LeaseExpiration": "8/31/2012",
        "Occupancy": "2",
        "Country": "USA",
        "Address2": "",
        "Lat": "33.7863317",
        "Lng": "-84.3836873",
        "Type": "loc",
        "Color": "red"
    }
]

【问题讨论】:

  • var data = d3[0];在这里你明确地说第一组数据。你试过这个吗:var data = d3;
  • @Eeliya:是的,我现在意识到我将两个数据集作为单独的对象返回。我想将数据项组合成一个大数组,例如,如果 data1 = [{"a":"xA1","b":"xB1"},{"a":"xA2","b": "xB2"}] 和 data2 = [{"a":"xA3","b":"xB3"},{"a":"xA4","b":"xB4"},{"a": "xA5","b":"xB5"}],我希望结果是:[{"a":"xA1","b":"xB1"},{"a":"xA2" ,"b":"xB2"},{"a":"xA3","b":"xB3"},{"a":"xA4","b":"xB4"},{"a" :"xA5","b":"xB5"}]

标签: javascript jquery json


【解决方案1】:

你可以使用concat()

var array1 = [{
    "ID-1": "a001a000002o4iZAAQ",
        "NAME-1": "Atlanta",
        "Address-1": "123 State Street",
        "City-1": "Atlanta",
        "StateAbbreviation-1": "GA",
        "SF-1": "",
        "LeaseExpiration-1": "8/31/2012",
        "Occupancy-1": "2",
        "Country-1": "USA",
        "Address2-1": "",
        "Lat-1": "33.7863317",
        "Lng-1": "-84.3836873",
        "Type-1": "loc",
        "Color-1": "red"
}];
var array2 = [{
    "ID-2": "a001a000002o4iZAAQ",
        "NAME-2": "Atlanta",
        "Address-2": "123 State Street",
        "City-2": "Atlanta",
        "StateAbbreviation-2": "GA",
        "SF-2": "",
        "LeaseExpiration-2": "8/31/2012",
        "Occupancy-2": "2",
        "Country-2": "USA",
        "Address2-2": "",
        "Lat-2": "33.7863317",
        "Lng-2": "-84.3836873",
        "Type-2": "loc",
        "Color-2": "red"
}];

var array3 = array1.concat(array2);

alert(JSON.stringify(array3));

【讨论】:

  • 我也试过了,它也只是将两个原始数据集作为单独的对象返回——我想将每个原始数据集中的所有对象组合成一个对象数组,例如,如果 data1 = [{"a":"xA1","b":"xB1"},{"a":"xA2","b":"xB2"}] 和 data2 = [{"a" :"xA3","b":"xB3"},{"a":"xA4","b":"xB4"},{"a":"xA5","b":"xB5"}] ,我希望结果是: [{"a":"xA1","b":"xB1"},{"a":"xA2","b":"xB2"},{"a ":"xA3","b":"xB3"},{"a":"xA4","b":"xB4"},{"a":"xA5","b":"xB5"} ]
  • @djackiem 只需将array1array2 替换为您的data1data2,您就会得到想要的结果。
  • 谢谢你——这终于对我有用了。它最初无法正常工作的原因是我的一个 JSON 文件中的数据有问题,并且它带有换行符并且没有被解析为 JSON。
猜你喜欢
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 2020-09-09
  • 2013-04-19
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
相关资源
最近更新 更多