将JSON数组与jQuery结合使用

Jam*_*oll 5 javascript jquery json

我整个上午都花了这么多时间在这里阅读,并在这里阅读,但发现自己绕圈了!

我正在尝试使用优秀的AmChartsJavascript图表绘制图表,以显示股票持有作为条形图和股票转向作为折线图.

我无法从一个查询到我的数据库获取两组数据,也不能使用AmCharts StockChart,因为它不是基于时间的数据...因此,我有两组需要与Javascript结合的数据.

数据从数据库中提取并作为JSON数组成功返回,类似于:

销售数据:

[{"brandName":"Fender","gearShiftedPerMonth":"35","retailSalesPerMonth":"55"},
 {"brandName":"Gibson","gearShiftedPerMonth":"23","retailSalesPerMonth":"43"},
 {"brandName":"Epiphone","gearShiftedPerMonth":"10","retailSalesPerMonth":"13"}]
Run Code Online (Sandbox Code Playgroud)

股票数据:

[{"brandName":"Gibson","stockValue":"1234"},
 {"brandName":"Fender","stockValue":"975"},
 {"brandName":"Epiphone","stockValue":"834"}]
Run Code Online (Sandbox Code Playgroud)

显然,实际数字是在这个例子中弥补的!

现在,我需要做的是将这些组合起来创建:

组合数据

[{"brandName":"Fender","gearShiftedPerMonth":"35","retailSalesPerMonth":"55","stockValue":"975"},
 {"brandName":"Gibson","gearShiftedPerMonth":"23","retailSalesPerMonth":"43","stockValue":"1234"},
 {"brandName":"Epiphone","gearShiftedPerMonth":"10","retailSalesPerMonth":"13","stockValue":"834"}]
Run Code Online (Sandbox Code Playgroud)

我们所拥有的是销售数据集与库存数据集相结合,以添加stockValue添加到相应品牌名称记录的附加数据.

我尝试过使用$.extend但我无法弄清楚如何在这种情况下使用它.

可能需要注意的是,数据对可能不一定是正确的顺序,并且尽管不太可能,但可能没有匹配,因此必须实现某种类型的归零错误捕获.

jua*_*rro 2

我认为他想要做的是连接两个数据集,就像它们是表格一样,通过品牌名称连接。根据我的测试,jQuery 的 $.extend() 函数并没有处理这个问题,而是根据对象在它接收到的对象数组中的索引来合并对象。

我认为密钥的匹配需要手动完成。

stock = [{"brandName":"Fender","gearShiftedPerMonth":"35","retailSalesPerMonth":"55"},
 {"brandName":"Gibson","gearShiftedPerMonth":"23","retailSalesPerMonth":"43"},
 {"brandName":"Epiphone","gearShiftedPerMonth":"10","retailSalesPerMonth":"13"}];
value = [{"brandName":"Gibson","stockValue":"1234"},
 {"brandName":"Fender","stockValue":"975"},
 {"brandName":"Epiphone","stockValue":"834"}];

var results = [];
$(stock).each(function(){
    datum1 = this;
    $(value).each(function() {
        datum2 = this;
        if(datum1.brandName == datum2.brandName)
            results.push($.extend({}, datum1, datum2));
    });
});
Run Code Online (Sandbox Code Playgroud)

这会导致:

[{"brandName":"Fender","gearShiftedPerMonth":"35","retailSalesPerMonth":"55","stockValue":"975"},
{"brandName":"Gibson","gearShiftedPerMonth":"23","retailSalesPerMonth":"43","stockValue":"1234"},
{"brandName":"Epiphone","gearShiftedPerMonth":"10","retailSalesPerMonth":"13","stockValue":"834"}]
Run Code Online (Sandbox Code Playgroud)

而不是使用$.extend()return 来代替:

[{"brandName":"Gibson","gearShiftedPerMonth":"35","retailSalesPerMonth":"55","stockValue":"1234"},
{"brandName":"Fender","gearShiftedPerMonth":"23","retailSalesPerMonth":"43","stockValue":"975"},
{"brandName":"Epiphone","gearShiftedPerMonth":"10","retailSalesPerMonth":"13","stockValue":"834"}]
Run Code Online (Sandbox Code Playgroud)