Javascript - Получить массив JSON с ESLINT 6 - PullRequest
0 голосов
/ 21 октября 2019

Я не могу настроить алгоритм, который подсчитывает мои вхождения, соблюдая 6 стандартов ESlint в javascript. Моя таблица ввода:

[
  {
    "id": 2,
    "name": "Health",
    "color": "0190fe"
  },
  {
    "id": 3,
    "name": "Agriculture",
    "color": "0190fe"
  },
  {
    "id": 1,
    "name": "Urban planning",
    "color": "0190fe"
  },
  {
    "id": 1,
    "name": "Urban planning",
    "color": "0190fe"
  }
]

И я хочу получить:

{"Городское планирование": 2, "Здоровье": 1, ...}

Но это не работает с компиляцией ESLINT / REACT ...

Это мой код:

    const jsonToIterate = *'MyPreviousInputJson'*
    const names = []
    jsonToIterate.map(item => (names.push(item.name)))

    const count = []
    names.forEach(item => {
      if (count[item]){
        count.push({text: item, value: 1})
      } else {
        count.forEach(function(top){top.text === item ? top.value =+ 1 : null})
      }
    })

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

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Ну, вам нужен объект в конце, а не массив, поэтому count должно быть {}. Я также не стал бы использовать map, если вы на самом деле ничего не отвечаете на звонок. Вы можете использовать reduce для этого:

let counts = topicsSort.reduce((p, c, i, a) => {
   if (!p.hasOwnProperty(c.name)) p[c.name] = 0;
   p[c.name]++;

   return p;
}, {});
0 голосов
/ 21 октября 2019

Я наполовину ожидаю, что кто-то закроет это как дубликат, потому что все, что вы просили, это счетчик частоты. Но вот ответ в любом случае:

const jsonToIterate = *'MyPreviousInputJson'*;
const names = {};

jsonToIterate.map(obj => {
  if(obj.name in names){
    names[obj.name]++
  }
  else{
    names[obj.name] = 1;
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...