将JSON数据组合到一个jquery变量上

时间:2015-11-02 17:01:42

标签: jquery json

所以我能够获得两个单独的JSON请求并分别吐出数据。我无法弄清楚的是如何将来自一个JSON数组的数据组合到另一个JSON数组中。下面是调用两个JSON数组的JS,其目的是能够匹配两个数组中的日期,并在日历上的每一天吐出目标数据(转换,完成,值)。所有数据都应添加到citationHTML变量中。

invokeAsync

这也是小提琴:https://jsfiddle.net/joseph_a_garcia/s41kr5hj/52/

1 个答案:

答案 0 :(得分:1)

循环第一个数组时,需要存储可在第二个循环中使用的查找值。

创建一个查找对象,然后在第一个循环中:

var key = weather[i].date.replace(/-/g,'')
lookup[key] = i;

然后在第二个循环中使用该对象来查找匹配项。这里重写了您的代码:

$.when(
    $.getJSON(dataUrl),
    $.getJSON(dataUrl2)
).done (function (data, data2) {
    var data = data[0].data;
    console.log(data, data2);
    var citationHTML = '';
    var channelHTML = '';
    var lookup = {};
    var weather = data.weather;
    for (var i = 0; i < weather.length; ++i) {
        var key = weather[i].date.replace(/-/g,'');
        lookup[key] = i;
        citationHTML += '<li id="day'+[i]+'" class="day"><div class="date">' + weather[i].date + '</div><div class="svg-icon"><img src="' + weather[i].hourly[0].weatherIconUrl[0].value + '" /></div><div class="data-wrap col2"><p class="data hi-temp"><span>' + weather[i].maxtempF + '</span><sup class="deg ng-scope" data-ng-if="hasValue()">°</sup></p><p class="data lo-temp"><span>' + weather[i].mintempF + '</span><sup class="deg ng-scope" data-ng-if="hasValue()">°</sup></p></div><p class="data desc">' + weather[i].hourly[0].weatherDesc[0].value + '</p></li>';
    }
    jQuery('#citation_report').append(citationHTML);
    jQuery.each(data2[0], function (i, item) {
        var day = $("#day" + lookup[item.date]);
        day.append('<tr><td class="tg-yw4l">' + item.date + '</td><td class="tg-yw4l">' + (+item.goalConversionRateAll).toFixed(2) + '%</td><td class="tg-yw4l">' + item.goalCompletionsAll + '</td><td class="tg-yw4l">$' + item.goalvalueall + '</td></tr>');
    })
}); 

这是一个固定的小提琴:https://jsfiddle.net/s41kr5hj/54/