Суммируйте массив json на основе вхождения строки в ключ и сохраняйте его в отдельном массиве json со строкой и ее количеством - PullRequest
0 голосов
/ 03 января 2019

У меня есть массив JSON, который состоит из данных следующим образом:

var teamDetails=[ 
 { "pType" : "Search Engines", "count" : 5},
 { "pType" : "Content Server", "count" : 1},
 { "pType" : "Content Server", "count" : 1},
 { "pType" : "Search Engines", "count" : 1},
 { "pType" : "Business", "count" : 1,},
 { "pType" : "Content Server", "count" : 1},
 { "pType" : "Internet Services", "count" : 1},
 { "pType" : "Search Engines", "count" : 6},
 { "pType" : "Search Engines", "count" : 1} 
];

Поэтому мне нужно суммировать подсчет на основе ptype, например Content Server = 3 раза, поисковые системы = 12 раз и т. Д.для других данных.Данные не являются статичными, так как я работаю с другими службами, поэтому они будут меняться, но формат данных будет таким же.Код должен быть динамическим, чтобы работать с любыми изменениями данных ptype.

1 Ответ

0 голосов
/ 03 января 2019

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

var data = teamDetails.reduce((prev, curr) => {
  const index = prev.findIndex(a => a.pType === curr.pType)
  if (index !== -1) {
    prev[index].count = prev[index].count + curr.count;
  } else {
  prev.push(curr);
  }
  return prev;
}, [])

var teamDetails = [{
    "pType": "Search Engines",
    "count": 5
  },
  {
    "pType": "Content Server",
    "count": 1
  },
  {
    "pType": "Content Server",
    "count": 1
  },
  {
    "pType": "Search Engines",
    "count": 1
  },
  {
    "pType": "Business",
    "count": 1,
  },
  {
    "pType": "Content Server",
    "count": 1
  },
  {
    "pType": "Internet Services",
    "count": 1
  },
  {
    "pType": "Search Engines",
    "count": 6
  },
  {
    "pType": "Search Engines",
    "count": 1
  }
];

var data = teamDetails.reduce((prev, curr) => {
  const index = prev.findIndex(a => a.pType === curr.pType)
  if (index !== -1) {
    prev[index].count = prev[index].count + curr.count;
  } else {
  prev.push(curr);
  }
  return prev;
}, [])
console.log(data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...