2013-05-10 4 views
2

Как получить уникальное имя продавца и для соответствующего avgprice и numproducts с помощью jquery? Мне было трудно разделить данные json. Пожалуйста, помогите мне, ребята. Я разбираю этот json-файл, используя $ .getJSON. Мы создаем график, где нам нужно использовать seperator после каждого имени продавца. Итак, здесь 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, соответствующие имени Merchant. Надеюсь, что это проясняет ..

{ 
    "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

+0

Я действительно не уверен, о чем вы просите. Нет никаких уникальных имен торговцев, они все дублируются. Какую информацию вы собираетесь подавать - просто имя продавца, имя продавца и категорию, что-то еще? Также укажите пример ввода и соответствующий результат, который вы ожидаете от него. –

+0

Нужны уникальные имена торговцев, В этом случае 3. (для этого avgprice и numproducts). – Ash

ответ

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

+0

@Ash Добро пожаловать! Я не понял ваш вопрос. С какими «множественными данными» вы хотите справиться - и как? :-) –

+0

Да, я должен быть немного понятнее .. Пожалуйста, проверьте эту ссылку .. http://stackoverflow.com/questions/16504621/accessing-data-in-the-json-file – Ash

Смежные вопросы