这是名为candidatesArray的数组中的输入数据:
[
{"name":"george","languages":["php","javascript","java"],"age":19,"graduate_date":1044064800000,"phone":"32-991-511"},
{"name":"anna","languages":["java","javascript"],"age":23,"graduate_date":1391220000000,"phone":"32-991-512"},
{"name":"hailee","languages":["regex","javascript","perl","go","java"],"age":31,"graduate_date":1296525600000,"phone":"32-991-513"}
]
字符串
我需要在这个集合中进行转换,作为函数的结果:
{candidates: [
{name: "George", age: 19, phone: "32-991-511"},
{name: "Hailee", age: 31, phone: "32-991-513"},
{name: "Anna", age: 23, phone: "32-991-512"}
],
languages: [
{lang:"javascript",count:1},
{lang:"java", count:2},
{lang:"php", count:2},
{lang:"regex", count:1}
]}
型
函数repCandidates:
第一个月
- 我需要用JavaScript ES6编写它
- 我不应该使用循环(for,while,repeat),但foreach是允许的,如果我使用“reduce”函数会更好
- 应聘者应填写姓名、年龄和电话,并按毕业日期填写。
- 语言应按字母顺序返回其计数器。
请访问https://codepen.io/rillervincci/pen/NEyMoV?editors=0010查看我的代码。
4条答案
按热度按时间ocebsuys1#
一种选择是先将
reduce
放入candidates
子对象,然后将push
和langauges
分别放入数组。迭代后,对
candidates
进行排序,并从每个候选对象中删除graduate_date
属性,然后再次使用reduce
将languages
数组转换为按语言索引的数组,每次递增count
属性:字符串
pdkcd3nj2#
通常的做法是在
reduce()
中完成所有的事情,但是有时候如果你把它分解一点会更容易阅读。这会创建一个counter
对象作为帮助器来跟踪语言计数。map()
s在数组上提取语言和个人信息,然后把它们放在一起:字符串
mxg2im7a3#
您可以像下面这样使用
Array.reduce
和Object.values
字符串
lawou6xi4#
如果您不想仅仅使用普通的JavaScript,我可以提供一个直观的解决方案。
字符串
要定义你的
report(data)
函数,你只需要representation
函数和TrueSet。请参考@ut8pia/classifier库的解释。候选人由他们的毕业日期表示,而语言是自我表示的。
TrueSet
一致地记录每个项目的出现频率,并提供方法n(item)
来检索它们。将您的数据添加到TrueSets就是所需的全部。型
您可以通过以下方式验证结果:
型