2013-05-10 149 views
2

如何获取唯一的商家名称以及相应的使用jquery的avgprice和numproducts?我一直在分离json数据。请帮助我..我使用$ .getJSON解析这个json文件。我们正在创建图表,我们需要在每个商家名称之后使用分隔符。所以这里avgprice和numProducts是x和y轴的值。所以,如果我使用类似这样的东西从json数据获得独特价值

$.getJSON("mock/Insight72.json", function(returnedData) { 
     dataLength = returnedData.data.length; 
console.log(returnedData) 
response = returnedData; 
     var x = new Array(); 
     var y = new Array(); 
     var mytext, f; 

     for (i = 0; i < dataLength; i++) { 

      x[i] = returnedData.data[i].avgPrice; 
      y[i] = returnedData.data[i].numProducts; 

x和y轴获取以相同的顺序存储。但我需要解析它应该采用对应于商家名称的avgprice和numProducts。希望这澄清了..

{ 
    "id" : "72", 
    "title" : "Item Category Product Level Average Price Comparison", 
    "xLabel" : null, 
    "yLabel" : "Average Price", 
    "zLabel" : null, 

    "data" : [ 
     { 
      "avgPrice" : 10, 
      "categoryID" : "152b7934dd7e4fbeac56f825b5deaebd", 
      "categoryName" : "Coffee Makers", 
      "merchantID" : "99a8cd5687d245f8bff2152fec710973", 
      "merchantName" : "Crate & Barrel", 
      "numProducts" : 400 
     }, 
     { 
      "avgPrice" : 20, 
      "categoryID" : "152b7934dd7e4fbeac56f825b5deaebd", 
      "categoryName" : "Coffee Makers", 
      "merchantID" : "f5b2c736eace488a859fb6c56f366522", 
      "merchantName" : "Williams-Sonoma", 
      "numProducts" : 500 
     }, 
     { 
      "avgPrice" :30, 
      "categoryID" : "152b7934dd7e4fbeac56f825b5deaebd", 
      "categoryName" : "Coffee Makers", 
      "merchantID" : "6ee163f4f236466289fae97bb40351b7", 
      "merchantName" : "Amazon", 
      "numProducts" : 38 
     }, 
     { 
      "avgPrice" : 40, 
      "categoryID" : "50215adc9ef64f91b4f4898fda7cf0b5", 
      "categoryName" : "Dishwashers", 
      "merchantID" : "99a8cd5687d245f8bff2152fec710973", 
      "merchantName" : "Crate & Barrel", 
      "numProducts" : 300 
     }, 
     { 
      "avgPrice" : 50, 
      "categoryID" : "50215adc9ef64f91b4f4898fda7cf0b5", 
      "categoryName" : "Dishwashers", 
      "merchantID" : "f5b2c736eace488a859fb6c56f366522", 
      "merchantName" : "Williams-Sonoma", 
      "numProducts" : 320 
     }, 
     { 
      "avgPrice" : 60, 
      "categoryID" : "50215adc9ef64f91b4f4898fda7cf0b5", 
      "categoryName" : "Dishwashers", 
      "merchantID" : "6ee163f4f236466289fae97bb40351b7", 
      "merchantName" : "Amazon", 
      "numProducts" : 350 
     } 
    ] 
} 
+0

只需要1商船名称或所有不同价值的商户名称? – diEcho 2013-05-10 12:53:50

+0

我真的不知道你在问什么。没有任何独特的商家名称,它们都是重复的。你会提供什么样的投入 - 只是商家名称,商家名称和类别,还有其他什么?还提供了您期望的输入和相应输出的示例。 – 2013-05-10 12:57:30

+0

需要唯一的商家名称,在这种情况下3.(对于avgprice和numproducts)。 – Ash 2013-05-10 12:58:20

回答

0

该函数将返回它找到的第一个匹配:

function getMerchantName(data, avgPrice, numProducts) { 
    for(x in a.data) { 
     if(a.data[x].avgPrice === avgPrice && a.data[x].numProducts === numProducts) 
      return a.data[x].merchantName; 
    } 
} 

Fiddle

2

这里的工作小提琴:http://jsfiddle.net/Esv6f/

/* get all items by merchant*/ 
function get_items_by_merchant(merchant_name) { 
    var items = new Array(); 
    $.each(json.data, function(index, item) { 
     if (item.merchantName == merchant_name) 
      items.push(item); 
    }); 

    return items; 
} 

/* get items of merchant "Amazon" */ 
var amazon_items = get_items_by_merchant("Amazon"); 

/* count the total num of products */ 
var amazon_num_products_total = 0; 

/* loop items */ 
$.each(amazon_items, function(index, item) { 
    amazon_num_products_total += item.numProducts; // add numProducts 

    /* alert the avgPrice and numProducts of the CURRENT item */ 
    alert("avgPrice: " + item.avgPrice + " numProducts: " + item.numProducts); 
}); 

/* alert the total num of products of amazon */ 
alert("Amazon numProducts total: " + amazon_num_products_total); 
+0

非常感谢您的回复。当多个数据不存在时,我们无法处理这个问题?所以,工作在相同的方法。 – Ash 2013-05-11 03:25:51

+0

@垃圾不客气!我不明白你的问题。你想处理什么样的“多种数据” - 以及如何? :-) – 2013-05-11 16:29:20

+0

是的,我必须更清楚..请检查此链接.. http://stackoverflow.com/questions/16504621/accessing-data-in-the-json-file – Ash 2013-05-12 05:59:19