首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用条件对Ajax请求中的值求和

使用条件对Ajax请求中的值求和
EN

Stack Overflow用户
提问于 2015-07-22 17:35:40
回答 1查看 412关注 0票数 0

我有一个Ajax请求在不同的数据库中拉取数据,例如,我有两个数据库,我发出一个ajax请求,它将查询这两个数据库,

代码语言:javascript
复制
[{"question_id":31,"columnheader":"joene_001","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"1.2","revenue":"2.4"},{"question_id":32,"columnheader":"joene_001_1","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"0","revenue":"0"},{"question_id":33,"columnheader":"joene_001_2","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"1.6","revenue":"3.2"},{"question_id":34,"columnheader":"TEST_001","ct_yes":"2","ct_no":"1","ct_maybe":"0","costperlead":"5","revenue":"10"},{"question_id":35,"columnheader":"TEST_001_1","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"1","revenue":"2"},{"question_id":36,"columnheader":"TEST_001_2","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"1","revenue":"2"},{"question_id":37,"columnheader":"TEST_001_3","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"2","revenue":"4"},{"question_id":38,"columnheader":"Diabetes_UK_3147","ct_yes":"4","ct_no":"1","ct_maybe":"0","costperlead":"4","revenue":"16"},{"question_id":39,"columnheader":"index_001","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"2","revenue":"4"},{"question_id":40,"columnheader":"index_001_1","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"1","revenue":"2"},{"question_id":41,"columnheader":"index_001_2","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"2","revenue":"4"},{"question_id":42,"columnheader":"index_001_3","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"3","revenue":"6"},{"question_id":43,"columnheader":"index_001_4","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"4","revenue":"8"},{"question_id":44,"columnheader":"index_001_5","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"5","revenue":"10"}]  

[{"question_id":36,"columnheader":"TEST_001_2","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"1","revenue":"0"},{"question_id":37,"columnheader":"TEST_001_3","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"2","revenue":"0"},{"question_id":38,"columnheader":"Diabetes_UK_3147","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"4","revenue":"8"},{"question_id":44,"columnheader":"index_001_5","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"5","revenue":"0"},{"question_id":39,"columnheader":"index_001","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"2","revenue":"0"},{"question_id":40,"columnheader":"index_001_1","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"1","revenue":"0"},{"question_id":42,"columnheader":"index_001_3","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"3","revenue":"0"},{"question_id":41,"columnheader":"index_001_2","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"2","revenue":"0"},{"question_id":43,"columnheader":"index_001_4","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"4","revenue":"0"},{"question_id":31,"columnheader":"joene_001","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"1.2","revenue":"0"},{"question_id":32,"columnheader":"joene_001_1","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"0","revenue":"0"},{"question_id":33,"columnheader":"joene_001_2","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"1.6","revenue":"0"},{"question_id":34,"columnheader":"TEST_001","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"5","revenue":"0"},{"question_id":35,"columnheader":"TEST_001_1","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"1","revenue":"0"}]

正如你所看到的,有两个结果,因为我在两个数据库上查询。它们具有相同的列question_idcolumnheaderct_yesct_noct_maybecostperleadrevenue

我想做的是用相同的question_id对所有信息求和。例如,"question_id":35在结果1和2上都存在,我想对它的列的值求和。然后在Datatables中显示它。到目前为止,我有在所有数据库中获取记录的代码,

代码语言:javascript
复制
$.ajax({
    url: "ajax/customer/all", 
    type: 'GET',
    success: function(result){
    var myObj = $.parseJSON(result);
    console.log(result);
        $.each(myObj, function(key,value) {
            $.ajax({
                url: "ajax/callcenter/charityresponses", 
                type: 'GET',
                data: {"from" : $("#fromDateCharityRes").val(), "to" :  $("#toDateCharityRes").val(), "dbconn" : value.dbconn},
                success: function(result2){
                var myObj = $.parseJSON(result2);
                console.log(result2);
                $.each(myObj, function(key,value) {
                    console.log(value.question_id); 
                    console.log(value.columnheader);    
                    console.log(value.ct_yes);  
                    console.log(value.ct_no);   
                    console.log(value.ct_maybe);    
                    console.log(value.costperlead); 
                    console.log(value.revenue); 
                });     

            }});
        });
    }});

我的ajax/customer/all上面的Ajax获取我需要获取信息的数据库的总数,ajax/callcenter/charityresponses通过返回上述结果的数据库连接字符串获取关于该数据库的信息。我需要的是对同一个question_id的值求和,该代码应该放在哪里,我该如何做?我已经有了在哪里分配每个值的代码,以便在datatable中呈现它。

代码语言:javascript
复制
console.log(result2); 

返回

代码语言:javascript
复制
[{"question_id":31,"columnheader":"joene_001","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"1.2","revenue":"2.4"},{"question_id":32,"columnheader":"joene_001_1","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"0","revenue":"0"},{"question_id":33,"columnheader":"joene_001_2","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"1.6","revenue":"3.2"},{"question_id":34,"columnheader":"TEST_001","ct_yes":"2","ct_no":"1","ct_maybe":"0","costperlead":"5","revenue":"10"},{"question_id":35,"columnheader":"TEST_001_1","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"1","revenue":"2"},{"question_id":36,"columnheader":"TEST_001_2","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"1","revenue":"2"},{"question_id":37,"columnheader":"TEST_001_3","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"2","revenue":"4"},{"question_id":38,"columnheader":"Diabetes_UK_3147","ct_yes":"4","ct_no":"1","ct_maybe":"0","costperlead":"4","revenue":"16"},{"question_id":39,"columnheader":"index_001","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"2","revenue":"4"},{"question_id":40,"columnheader":"index_001_1","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"1","revenue":"2"},{"question_id":41,"columnheader":"index_001_2","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"2","revenue":"4"},{"question_id":42,"columnheader":"index_001_3","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"3","revenue":"6"},{"question_id":43,"columnheader":"index_001_4","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"4","revenue":"8"},{"question_id":44,"columnheader":"index_001_5","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"5","revenue":"10"}]  

[{"question_id":36,"columnheader":"TEST_001_2","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"1","revenue":"0"},{"question_id":37,"columnheader":"TEST_001_3","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"2","revenue":"0"},{"question_id":38,"columnheader":"Diabetes_UK_3147","ct_yes":"2","ct_no":"0","ct_maybe":"0","costperlead":"4","revenue":"8"},{"question_id":44,"columnheader":"index_001_5","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"5","revenue":"0"},{"question_id":39,"columnheader":"index_001","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"2","revenue":"0"},{"question_id":40,"columnheader":"index_001_1","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"1","revenue":"0"},{"question_id":42,"columnheader":"index_001_3","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"3","revenue":"0"},{"question_id":41,"columnheader":"index_001_2","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"2","revenue":"0"},{"question_id":43,"columnheader":"index_001_4","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"4","revenue":"0"},{"question_id":31,"columnheader":"joene_001","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"1.2","revenue":"0"},{"question_id":32,"columnheader":"joene_001_1","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"0","revenue":"0"},{"question_id":33,"columnheader":"joene_001_2","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"1.6","revenue":"0"},{"question_id":34,"columnheader":"TEST_001","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"5","revenue":"0"},{"question_id":35,"columnheader":"TEST_001_1","ct_yes":"0","ct_no":"0","ct_maybe":"0","costperlead":"1","revenue":"0"}]
EN

回答 1

Stack Overflow用户

发布于 2015-07-22 20:48:45

我找到了一种使用jQuery的grep()函数来实现此目的的方法,所以我所做的就是制作一个数组,然后检查question_id是否已经存在,如果没有,放入其中,如果已经存在,则更新值,所以我

代码语言:javascript
复制
var result = $.grep(records, function(e){ return e.question_id == value.question_id; });
var records = [];                           
if (result.length == 0) {
    records.push({
     question_id: value.question_id,
     columnheader: value.columnheader,
     ct_yes: value.ct_yes,
     ct_no: value.ct_no,
     ct_maybe: value.ct_maybe,
     costperlead: value.costperlead,
     revenue: value.revenue,
     });

} else if (result.length == 1) {
    result[0].ct_yes = parseInt(result[0].ct_yes) + parseInt(value.ct_yes);
    result[0].ct_no = parseInt(result[0].ct_no) + parseInt(value.ct_no);
    result[0].ct_maybe = parseInt(result[0].ct_maybe) + parseInt(value.ct_maybe);
    result[0].revenue = parseFloat(result[0].revenue )+ parseFloat(value.revenue);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31559317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档