Javascript 使用map和reduce获取对象数组
我有一系列的Javascript 使用map和reduce获取对象数组,javascript,functional-programming,ecmascript-6,Javascript,Functional Programming,Ecmascript 6,我有一系列的 var c = [{name: 'John'}, {name: 'John'}, {name: 'Tom'}]; 我想使用reduce方法和map来获得以下结果: result = [ { name: "John", occurence: 2 }, { name: "Tom", occurence: 1 } ] 这里有一个尝试,我已经尝试过,但仍然没有完全得到它 c=[{ 名字:“约翰” }, { 名字:“约翰” }, { 姓名:“西蒙” }]; 变量d=
var c = [{name: 'John'}, {name: 'John'}, {name: 'Tom'}];
我想使用reduce方法和map来获得以下结果:
result = [
{ name: "John", occurence: 2 },
{ name: "Tom", occurence: 1 }
]
这里有一个尝试,我已经尝试过,但仍然没有完全得到它
c=[{
名字:“约翰”
}, {
名字:“约翰”
}, {
姓名:“西蒙”
}];
变量d=c.reduce((countMap,word)=>{
countMap[word.name]=++countMap[word.name]| 1;
返回计数图
}, []);
变量e=c.reduce((countMap,word)=>{
q=[];
countMap[word.name]=++countMap[word.name]| 1;
var p={
name:word.name,
发生:countMap[单词.名称]
}
q、 推(p);
返回q
}, []);
控制台日志(e)代码>使用reduce肯定是正确的,但我会将计算分为两个不同的步骤
让c=[{name:'John'},{name:'John'},{name:'Tom'}];
const pairs=o=>Object.keys(o.map)(k=>[k,o[k]])
让count=c.reduce((acc,{name})=>{
if(acc[名称]==未定义)
返回Object.assign(acc,{[name]:1})
其他的
返回Object.assign(acc,{[name]:acc[name]+1})
}, {})
var result=pairs(count).map(([name,occurrences])=>({name,occurrences}))
console.log(结果)
//=>[{name:'John',occurrences:2},{name:'Tom',occurrences:1}]
使用reduce肯定是正确的,但我会将计算分为两个不同的步骤
让c=[{name:'John'},{name:'John'},{name:'Tom'}];
const pairs=o=>Object.keys(o.map)(k=>[k,o[k]])
让count=c.reduce((acc,{name})=>{
if(acc[名称]==未定义)
返回Object.assign(acc,{[name]:1})
其他的
返回Object.assign(acc,{[name]:acc[name]+1})
}, {})
var result=pairs(count.map)([name,currence])=>({name,currence}))
console.log(结果)
//=>[{name:'John',出现次数:2},{name:'Tom',出现次数:1}]
你忘了发布尝试了吗?@AndrewL。谢谢刚刚编辑了question@mike-c我的JSFIDLE中现在的运行似乎不起作用了。@JoeSaad你是什么意思,为什么打我?我根本没有修改你的JSFIDLE代码。我只是把它复制到你问题的一个可运行的片段中。你忘了发布这个尝试了吗?@AndrewL。谢谢刚刚编辑了question@mike-c我的JSFIDLE中现在的运行似乎不起作用了。@JoeSaad你是什么意思,为什么打我?我根本没有修改你的JSFIDLE代码。我只是把它复制到你的问题里面的一个可运行的片段中。这确实有效。谢谢@naomik,我仍在努力理解为什么我们有常数对。我们没有使用它。我也不知道第二种方法。再次感谢!我们肯定是在使用it配对
;仔细阅读代码。第二部分的意思是建议您将这些内容封装在函数中,这样就不会使代码的其余部分变得混乱。我在这里添加了一些注释,还添加了第三部分,展示了如何使用更具语义的数据结构进行相同的计算。这确实有效。谢谢@naomik,我仍在努力理解为什么我们有常数对。我们没有使用它。我也不知道第二种方法。再次感谢!我们肯定是在使用it配对
;仔细阅读代码。第二部分的意思是建议您将这些内容封装在函数中,这样就不会使代码的其余部分变得混乱。我在这里添加了一些注释,还添加了第三部分,展示了如何使用更具语义的数据结构进行相同的计算。