将原始数据转换为图形就绪数据

时间:2018-10-09 11:15:10

标签: javascript arrays loops object graph

我敢肯定有一个简单的解决方案,但是到目前为止,我的搜索中没有任何内容。

我所拥有的是一系列董事的姓名,并且找到了一个不错的for循环来对给定的董事进行计数,并为每个董事提供总数。

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 :(得分:0)

const countDirectors = new Map([...new Set(directorsArray)].map(
    x => [x, directorsArray.filter(y => y === x).length])
);

这些是ES6的新功能。 Set查看所有唯一值,并在散布运算符的帮助下将它们存储在数组中。然后将其传递到Map中,该Map创建一个可迭代的对象。

编辑: 您可以使用以下命令迭代countDirectors countDirectors.forEach((key, value) => {x: ${key}, y: ${value}}) 或类似形式以图形所需的格式获取它。

答案 1 :(得分:0)

不知道如何准确地接收名称数组,并且我假设输出应该是对象数组。 因此,对于此输入:f[docker] s[ ] f[INFO] s[ ] f[2019-10-01] s[ ] f[08:33:58] s[,] f[878] s[ ] f[[1]] s[ ] f[schedule:run] s[ ] f[Running] s[ ] f[job] s[ ] f[Every] s[ ] f[1] s[ ] f[hour] s[ ] f[do] s[ ] f[_precache_systems_streaks()] s[ ] f[(last] s[ ] f[run:] s[ ] f[2018-09-21] s[ ] f[07:33:58] s[, ] f[next] s[ ] f[run:] s[ ] f[2018-09-21] s[ ] ,我应用了以下逻辑: ```     const名称= ['name1','name2','name2','name2','name1'];

['name1', 'name2', 'name2', 'name2', 'name1']

这种逻辑当然可以简化,但是这样写是为了让您更容易理解