Преобразование необработанных данных в готовые данные графика - PullRequest
0 голосов
/ 09 октября 2018

Я уверен, что есть простое решение для этого, но я до сих пор не нашел ничего в своем поиске.

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

let countDirectors = {};
    for (var i = 0; i < directorsArray.length; i++) {
    countDirectors[directorsArray[i]] = 1 + (countDirectors[directorsArray[i]] || 0);}

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

График, который я использую, требует, чтобы данные отображались таким образом.

{x: "Director Name1", y: 2}, {x: "DirectorName2", y: 4}

Каков наилучший способ изменить мой исходный цикл for для настройки объекта, как в примере?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Не знаю, как именно вы получаете массив имен, и я предположил, что вывод должен быть массивом объекта.Поэтому для этого ввода: ['name1', 'name2', 'name2', 'name2', 'name1'] Я применил эту логику: `` `const names = ['name1', 'name2', 'name2', 'name2', 'name1'];

const graphable = names.reduce((forGraph, name) => {
const current = forGraph.find(item => item.x === name);
if (current) {
    current.y +=1
} else {
    forGraph.push({
        x: name,
        y: 1
    })
}
    return forGraph
}, []);

Эта логика, конечно, может быть упрощена, но она написана так, чтобы вам было легче понять

0 голосов
/ 09 октября 2018
const countDirectors = new Map([...new Set(directorsArray)].map(
    x => [x, directorsArray.filter(y => y === x).length])
);

Это новые функции ES6.Set просматривает все уникальные значения и сохраняет их в массиве с помощью оператора распространения.Затем он передается в Map, которая создает итеративный объект.

Редактировать: Вы можете перебрать countDirectors, например, countDirectors.forEach((key, value) => {x: ${key}, y: ${value}}) или аналогичный, чтобы получить его в формате, необходимом для построения графика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...