2015-05-04 35 views
2

我有一个SQL表看起来像这样:创建Javascript对象的使用环路与条件

+------+------------+---------+---------------------+-----------+ 
| SrNo | BidderName | BidAmt |  BidDate  | BidTicks | 
+------+------------+---------+---------------------+-----------+ 
| 1 | ARBAAZ  | 500.00 | Apr 30 2015 10:27AM | 348854000 | 
| 2 | SHEKHAR | 600.00 | Apr 30 2015 10:28AM | 348845000 | 
| 3 | SHEKHAR | 800.00 | Apr 30 2015 10:28AM | 348838000 | 
+------+------------+---------+---------------------+-----------+ 

我送这个给我的JSON格式的客户方。

我能够获取在下列方式值:

var data; 

Table.forEach(function (field) { 
    var name = field.BidderName; 
    var amount = field.BidAmt; 
    data = ""; 
}); 

我想创建一个对象,它看起来像这样从Table我海军报图:

var dataset = [ 
    { 
     label: "ARBAAZ", 
     data: [[348854000, 500.00]],//created from [bidticks,bidamt] 
     color: "#FF0000", 
     points: { fillColor: "#FF0000", show: true }, 
     lines: { show: true } 
    }, 
    { 
     label: "SHEKHAR", 
     data: [[348845000, 600.00], [48838000, 800.00]], 
     color: "#0062E3", 
     points: { fillColor: "#0062E3", show: true }, 
     lines: { show: true } 
    } 
]; 

任何想法,怎么样我可以做到这一点?

+0

您可以访问这些链接[链接1](http://www.codeproject.com/Articles/203621/Call-HTTPhandler-from-jQuery-Pass-data-and-retriev)链路2](HTTP:// stackoverflow.com/questions/16199443/jquery-json-and-c-sharp-reading-json-reply-from-c-sharp-httphandler) –

+0

描述你的最终报告的结构... – deostroll

+0

在我看来,像你需要转交结果。为此,请获取不同出价人名称的列表,然后遍历不同的列表,并在名称与原始数据集中的名称匹配的位置将值选择为数据。 –

回答

0

假设你的JSON数据是在无功 '数据', 可以通过与filter功能循环,

var seen = {}; 
    data = data.filter(function(entry) { 
     var previous; 

     // Have we seen this label before? 
     if (seen.hasOwnProperty(entry.label)) { 
      // Yes, grab it and add this data to it 
      previous = seen[entry.label]; 
      var data = [entry.BidTicks, entry.BidAmt] ; 
      previous.data.push(data); 

      // Don't keep this entry, we've merged it into the previous one 
      return false; 
     }  

     // entry.data probably isn't an array; make it one for consistency 

     entry.data = []; 
     var data = [entry.BidTicks, entry.BidAmt] ; 
     entry.data.push(data); 

     //delete the attributes which are not required in final output 
     delete entry.BidTicks; 
     delete entry.BidAmt; 

     // Remember that we've seen it 
     seen[entry.label] = entry; 

     // Keep this one, we'll merge any others that match into it 
     return true; 
    }); 

工作小提琴是在这里 - >fiddle to filter the array of objects

关于你的额外属性 '色' ,'lines'等等,我相信你现在可以把它们带入最终的输出。

+0

我如何将它分成不同投标人的大块?正如你可以看到数据集在这个例子中有两个块,每个块对应Arbaaz和Shekhar – Arbaaz

+0

@Arbaaz我编辑了答案以反映你需要的确切变化。如果您发现它有用,请接受答案 – ScrapCode

0

我不知道你在JSON对象是有什么确切的数据结构。 但是,我认为你可以做这样的

$.each(data, function(index, statistic) { 
     if (statistic.BidderName == 'Team Red') { 
      teamRed.push([statistic.BidAmt, statistic.timeStamp]); 
     } else { 
      teamBlue.push([statistic.BidAmt, statistic.timeStamp]); 
     } 
    }); 

现在你可以在数据集对象使用teamRed和teamBlue。

我假设你确实有这个BidderName将区分要么此行属于蓝色或红色的团队。

+0

Team Read实际上是Arbaaz和Shekhar。我应该纠正这个例子。 – Arbaaz

+0

对不起,我应该纠正这个例子。红色和蓝色的球队并不是从桌面上返回的名字。阿尔巴兹和谢卡尔。我已经更新了这个问题。我所拥有的只是数据集结构。 – Arbaaz