2015-04-15 3 views
0

У меня есть объект JSON, который выглядит следующим образом:Как учитывать определенные элементы в формате JSON

var allDataJson = [{"Researchers":"Laura, Mikael","Year":"2015"}, 
{"Researchers":"Mikko","Year":"2013",}, 
{"Researchers":"Harri","Year":"2015"}, .......] //long list 

Мне нужно создать объект JSON следующим образом:

var myjson = [{"Year": 2015, "Total":60}, 
        {"Year": 2014, "Total":68}, 
        {"Year": 2013, "Total":72}] 

Например есть 60 allDataJson с периодом 2015 года.

До сих пор я мог получить только значения года. Любые идеи о том, как рассчитать Total?

Вот мой код:

function countPublicationsPerYear(allDataJson){ 
    var lookup = {}; 
    var items = allDataJson; 
    var result = []; 

    for (var item, i = 0; item = items[i++];) { 
     var year = item.Year; 
     count ++; 
     if (!(year in lookup)) { 
      var count = Object.keys(item).length; 
      lookup[year] = 1; 
      result.push({ "Year":year 
      }); 
     } 
    } 
    return result; //returns Year: 2013, 2014, 2015 
} 

ответ

1

Таким образом, вы пытаетесь добавить общее число исследователей?

Ответ

function countPublicationsPerYear(allDataJson){ 
    var lookup = {}; 
    var items = allDataJson; 
    var result = []; 

    for (var item, i = 0; item = items[i++];) { 
     var year = item.Year; 
     count ++; 
     if (!(year in lookup)) { 
      lookup[year] = 1; 
     } else { 
      lookup[year]++; 
     } 
    } 

    for (var property in lookup) { 
     if (lookup.hasOwnProperty(property)) { 
      result.push({"Year": property, "Total": lookup[property]}); 
     } 
    } 

    return result; //returns Year: 2013, 2014, 2015 
} 

var allDataJson = [{"Researchers":"Laura, Mikael","Year":"2015"}, 
 
{"Researchers":"Mikko","Year":"2013",}, 
 
{"Researchers":"Harri","Year":"2015"}]; 
 

 
function countPublicationsPerYear(allDataJson){ 
 
     var lookup = {}; 
 
     var items = allDataJson; 
 
     var result = []; 
 
    
 
     for (var item, i = 0; item = items[i++];) { 
 
      var year = item.Year; 
 
      if (!(year in lookup)) { 
 
       lookup[year] = 1; 
 
      } else { 
 
       lookup[year]++; 
 
      } 
 
     } 
 
    
 
     for (var property in lookup) { 
 
      if (lookup.hasOwnProperty(property)) { 
 
       result.push({"Year": property, "Total": lookup[property]}); 
 
      } 
 
     } 
 
    
 
     alert(JSON.stringify(result)); 
 
    
 
     return result; //returns Year: 2013, 2014, 2015 
 
    } 
 

 
countPublicationsPerYear(allDataJson);

+0

Это печатает первое сопоставление объектов с 2013 года, 2014, 2015. Мне нужно подсчитать, сколько раз происходило в те годы , – supaplex

+0

Нет, я пытаюсь найти, сколько раз публикации происходили в 2015 году. «Var allDataJson = [{« Исследователи »:« Лора, Микаэль »,« Год »:« 2015 »}, {« Исследователи »: Микко »,« Год »:« 2013 »,}, {« Исследователи »:« Харри »,« Год »:« 2015 »}]. Здесь 2015 год будет иметь общую ценность 2. – supaplex

+0

Это очень помогает! – supaplex

0

Я хотел бы сделать что-то вроде этого:

var count = {}; 
for (var x = 0; x < allDataJson.length; x++) { 
    var current = allDataJson[x]; 
    if (!count[current["Year"]]) count[current["Year"]] = 1; 
    else 
     count[current["Year"]] = count[current["Year"]] + 1; 
} 

var result = [] 
for(key in count){ 
    result.push({ 
     "Year" : key, 
     "Total" : count[key] 
    }) 
} 

console.log(result) //prints [{"Year":"2013","Total":1},{"Year":"2015","Total":2}] 

см скрипку здесь: https://jsfiddle.net/

0

Я закончил тем, что писал этот отрывок для вас:

var totals = {}; 
for (var i=0; i<allDataJson.length; i++) { 
    var researchYear = allDataJson[i].Year; 
    if (researchYear in totals){ 
    totals[researchYear]++; 
    } else { 
    totals[researchYear] = 1; 
    } 
}; 
console.log(totals); // your years summaries 
console.log(JSON.stringify(totals)); //as json 
0
var allDataJson = [{"Researchers":"Laura, Mikael","Year":"2015"}, 
{"Researchers":"Mikko","Year":"2013"}, 
{"Researchers":"Harri","Year":"2015"}, 
{"Researchers":"Mikko","Year":"2013"}, 
{"Researchers":"Harri","Year":"2015"},{"Researchers":"Mikko","Year":"2013"}, 
{"Researchers":"Harri","Year":"2015"},{"Researchers":"Mikko","Year":"2013"}, 
{"Researchers":"Harri","Year":"2015"},{"Researchers":"Mikko","Year":"2013"}, 
{"Researchers":"Harri","Year":"2015"}]; 
var your_array=[]; 
var counts = {}; 
$.each(allDataJson, function (key, vale) { 
    your_array.push(vale.Year); 
}); 
your_array.forEach(function(x) { 
    counts[x] = (counts[x] || 0)+1; 
}); 
alert(JSON.stringify(counts)); 

demo

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