Преобразование данных объекта в массив для d3plus-реагировать - PullRequest
0 голосов
/ 19 мая 2019

У меня есть API, который возвращает данные в следующем формате:

{
    "Information Technology": {
        "Name": "Information Technology",
        "Change": "0.82%"
    },
    "Consumer Staples": {
        "Name": "Consumer Staples",
        "Change": "0.19%"
    }
}

Я хочу преобразовать его в следующий формат в моих визуализациях d3plus:

[
    {
        "Name": "Information Technology",
        "Change": "0.82%"
    },
    {
        "Name": "Consumer Staples",
        "Change": "0.19%"
    }
]

Как мнесделай это.Вот мой компонент React, который использует d3plus:

function Chart() {
    const methods = {
        groupBy: 'Name',
        data: 'https://example.com/api/sectors-performance',
        size: d => d.Change
    };

    return <Treemap config={methods} />;
}

1 Ответ

0 голосов
/ 20 мая 2019

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

function Chart() {
    const methods = {
        groupBy: 'id',
        data: 'https://example.com/api/sectors-performance',
        size: d => d.value
    };

    const formatter = d =>
        Object.keys(d).map(key => ({
            id: d[key].Name,
            value: numeral(d[key].Change).value()
        }));

    return <Treemap config={methods} dataFormat={formatter} />;
}

Хитрость заключается в отправке форматера как свойства!

...