Member 11052432 Ответов: 1

Фильтрация данных json и их суммирование


Всем Привет,

У меня есть данные Json, как показано ниже :-

var tempData =[{"url":"http://google.com","yyyy_mm":"2017-12","skills":"C#","count":3},
               {"url":"www.yahoo.com","yyyy_mm":"2017-12","skills":"asp.ner","count":4},
               {"url":"yahoo.com","yyyy_mm":"2017-12","skills":"vb.net","count":10},
               {"url":"yahoo.com","yyyy_mm":"2017-11","skills":"vb.net","count":5},
               {"url":"yahoo.com","yyyy_mm":"2017-11","skills":"vb.net","count":6},
               {"url":"yahoo.com","yyyy_mm":"2017-11","skills":"vb.net","count":10},
               {"url":"yahoo.com","yyyy_mm":"2017-10","skills":"vb.net","count":11},
               {"url":"yahoo.com","yyyy_mm":"2017-10","skills":"json","count":100}]


У меня есть для фильтрации через колонку yyyy_mm и вычислить сумму столбца "кол-во" нравится
предположим, yyyy_mm = 2017-12, тогда количество будет равно 17
аналогично для 2017-11 годов количество будет равно 21
а для 2017-10 годов граф = 111 и так далее....
и снова создайте новые данные json.
Как этого добиться?


Заранее спасибо.

Что я уже пробовал:

Я пытался, но не смог добиться этого.

F-ES Sitecore

Поиск учебников по использованию json из javascript

https://www.w3schools.com/js/js_json_arrays.asp

Как бы то ни было, Ваш вопрос читается просто как просьба, чтобы мы сделали вашу работу за вас.

1 Ответов

Рейтинг:
9

Karthik_Mahalingam

пробовать
проверьте встроенные комментарии

var tempData = [{ "url": "http://google.com", "yyyy_mm": "2017-12", "skills": "C#", "count": 3 },
             { "url": "www.yahoo.com", "yyyy_mm": "2017-12", "skills": "asp.ner", "count": 4 },
             { "url": "yahoo.com", "yyyy_mm": "2017-12", "skills": "vb.net", "count": 10 },
             { "url": "yahoo.com", "yyyy_mm": "2017-11", "skills": "vb.net", "count": 5 },
             { "url": "yahoo.com", "yyyy_mm": "2017-11", "skills": "vb.net", "count": 6 },
             { "url": "yahoo.com", "yyyy_mm": "2017-11", "skills": "vb.net", "count": 10 },
             { "url": "yahoo.com", "yyyy_mm": "2017-10", "skills": "vb.net", "count": 11 },
             { "url": "yahoo.com", "yyyy_mm": "2017-10", "skills": "json", "count": 100 }];

       var distinct = []; // array to store unique dates
       for (var i = 0; i < tempData.length; i++) {  // loop to find unique date
           var item = tempData[i];
           if (distinct.indexOf(item.yyyy_mm) == -1)  // refer indexOf - Google
               distinct.push(item.yyyy_mm);
       }
       var finalArray = [];  // array to store final output
       for (var i = 0; i < distinct.length; i++) {
           var count = 0;
           for (var j = 0; j < tempData.length; j++) {
               if (distinct[i] == tempData[j].yyyy_mm)  // find the matching items form the main array with respect to each item from distinct
                   count += tempData[j].count;
           }
           finalArray.push({"yyyy_mm":distinct[i],"count":count})  // add the count to the final array
       }


Member 11052432

Привет, спасибо за быстрый ответ.

Я также хочу построить данные в формате JSON, например
Варе данных tempdata = [{ "адрес": "http://google.com", "yyyy_mm": "2017-12", "навыки": "с#", "Граф": 17 },
{ "url": "yahoo.com", "гггг_мм": "2017-11", "навыки": "vb.net", "граф": 21 },
{ "url": "yahoo.com", "yyyy_mm": "2017-10", "skills": "json", "count": 111}];
Не могли бы вы дать мне решение?

Большое спасибо !!!!!!

Karthik_Mahalingam

как вы писали google.com
с 2017-12 года есть google, а также yahoo.

Member 11052432

Варе данных tempdata = [{ "адрес": "http://google.com", "yyyy_mm": "2017-12", "навыки": "с#", "Граф": 3 },
{ "url": "http://www.google.com", "yyyy_mm": "2017-12", "навыки": "asp.ner", "count": 4 },
{ "url": "http://google.com", "гггг_мм": "2017-12", "навыки": "vb.net", "граф": 10 },
{ "url": "yahoo.com", "гггг_мм": "2017-11", "навыки": "vb.net", "граф": 5 },
{ "url": "yahoo.com", "гггг_мм": "2017-11", "навыки": "vb.net", "граф": 6 },
{ "url": "yahoo.com", "гггг_мм": "2017-11", "навыки": "vb.net", "граф": 10 },
{ "url": "yahoo.com", "гггг_мм": "2017-10", "навыки": "vb.net", "граф": 11 },
{ "url": "yahoo.com", "yyyy_mm": "2017-10", "skills": "json", "count": 100 }];

Не могли бы вы предоставить решение, как показано ниже?
Варе данных tempdata = [{ "адрес": "http://google.com", "yyyy_mm": "2017-12", "навыки": "с#", "Граф": 17 },
{ "url": "yahoo.com", "гггг_мм": "2017-11", "навыки": "vb.net", "граф": 21 },
{ "url": "yahoo.com", "yyyy_mm": "2017-10", "skills": "json", "count": 111}];

Karthik_Mahalingam


        var tempData = [{ "url": "http://google.com", "yyyy_mm": "2017-12", "skills": "C#", "count": 3 },
 { "url": "http://www.google.com", "yyyy_mm": "2017-12", "skills": "asp.ner", "count": 4 },
 { "url": "http://google.com", "yyyy_mm": "2017-12", "skills": "vb.net", "count": 10 },
 { "url": "yahoo.com", "yyyy_mm": "2017-11", "skills": "vb.net", "count": 5 },
 { "url": "yahoo.com", "yyyy_mm": "2017-11", "skills": "vb.net", "count": 6 },
 { "url": "yahoo.com", "yyyy_mm": "2017-11", "skills": "vb.net", "count": 10 },
 { "url": "yahoo.com", "yyyy_mm": "2017-10", "skills": "vb.net", "count": 11 },
 { "url": "yahoo.com", "yyyy_mm": "2017-10", "skills": "json", "count": 100 }];


        var distinct = []; // array to store unique dates
        for (var i = 0; i < tempData.length; i++) {  // loop to find unique date
            var item = tempData[i];
            if (distinct.indexOf(item.yyyy_mm) == -1)  // refer indexOf - Google
                distinct.push(item.yyyy_mm);
        }
        var finalArray = [];  // array to store final output
        for (var i = 0; i < distinct.length; i++) {
            var count = 0;
            var item = undefined;
            for (var j = 0; j < tempData.length; j++) {
                if (distinct[i] == tempData[j].yyyy_mm)  // find the matching items form the main array with respect to each item from distinct
                {
                    if (count == 0)
                        item = tempData[j];
                    count += tempData[j].count;
                }
                if (item)
                    item.count = count;
            }
            finalArray.push(item)  // add the count to the final array
        }

Member 11052432

Большое спасибо... это действительно сработало.

Karthik_Mahalingam

добро пожаловать