Member 11052432 Ответов: 1

Фильтруйте данные JSON с помощью некоторого столбца


Всем Привет,

У меня есть ниже данные json.
Я хочу отфильтровать с помощью столбца url, skill и yyyy_mm и создать новые данные в формате json.

У меня есть 2 требования здесь:-
Использование и оператор:
1). фильтр с использованием столбца url, столбца yyyy_mm & skills, предположим, что я передаю url как http://google.com и навыки = C# и yyyy_mm = 2017-12

Просто как SQL - где и навыки yyyy_mm = '2017-10' = 'С#' и URL-адреса, такие как '%google.com%'. Тогда он должен вернуть мне все соответствующие данные.

Использование или оператор:
2). фильтр, используя URL-адрес , yyyy_mm &ампер; усилитель; колонки навыки. Таким образом, в этом случае должны быть возвращены любые совпадающие строки.

Просто как SQL - где 2017-12 yyyy_mm = '' и (навыки = 'С#' или навыки = 'vb.net') и URL, например '%google.com%'. Тогда он должен вернуть мне все соответствующие данные.


var tempData =[{"url":"http://google.com/shjj/player","yyyy_mm":"2017-12","skills":"C#","count":3},                    {"url":"http://google.com","yyyy_mm":"2017-12","skills":"C#","count":4}
{"url":"http://google.com/jkl/uop","yyyy_mm":"2017-10","skills":"C#","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":"https://yahoo.com/player/fast","yyyy_mm":"2017-11","skills":"vb.net","count":6},

{"url":"google.com/lope/fgkl","yyyy_mm":"2017-10","skills":"vb.net","count":10},

{"url":"http://google.com/gog/blab","yyyy_mm":"2017-10","skills":"vb.net","count":11},
{"url":"yahoo.com","yyyy_mm":"2017-10","skills":"json","count":100}
{"url":"yahoo.com/onj/sfd","yyyy_mm":"2017-10","skills":"C#","count":200}]


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

Я пробовал использовать метод indexof, но как применить оператор OR.

1 Ответов

Рейтинг:
2

Karthik_Mahalingam

пробовать

function filter(data, url, skills, date) {
          url = url.toLowerCase();
          skills = skills.map(function (a) { return a.toLowerCase() });
          var result = [];
          for (var i = 0; i < data.length; i++) {
              var item = data[i];
              if (item.url.toLowerCase().indexOf(url) > -1)
                  if (item.yyyy_mm == date)
                      if (skills.indexOf(item.skills.toLowerCase()) > -1)
                          result.push(item);
          }
          return result;
      }

      var data1 = filter(tempData, 'google.com', 'C#', '2017-12')
      var data2 = filter(tempData, 'yahoo.com', ['C#', 'vb.net'], '2017-12')