我敢肯定有一个简单的解决方案,但是到目前为止,我的搜索中没有任何内容。
我所拥有的是一系列董事的姓名,并且找到了一个不错的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循环以使对象设置像示例一样的最佳方法是什么?
答案 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']
这种逻辑当然可以简化,但是这样写是为了让您更容易理解