Javascript 什么是';获取';方法请参阅Array.prototype.reduce方法';她回电话了吗?

Javascript 什么是';获取';方法请参阅Array.prototype.reduce方法';她回电话了吗?,javascript,Javascript,标题可能看起来很冗长,但关于这个问题中的答案: 我想知道什么是let count=prev.get(curr.key)| 0实际上是指。就我所知,累加器(prev)只是一个数字;get方法在这里实际做什么?我查看了MDN文档,但没有结果: let objArr=[ {关键字:2013年9月23日星期一00:00:00 GMT-0400',val:42}, {关键字:2013年9月24日星期一00:00:00 GMT-0400',val:78}, {关键字:2013年9月25日星期一00:00:

标题可能看起来很冗长,但关于这个问题中的答案:

我想知道什么是
let count=prev.get(curr.key)| 0实际上是指。就我所知,累加器(
prev
)只是一个数字;
get
方法在这里实际做什么?我查看了MDN文档,但没有结果:

let objArr=[
{关键字:2013年9月23日星期一00:00:00 GMT-0400',val:42},
{关键字:2013年9月24日星期一00:00:00 GMT-0400',val:78},
{关键字:2013年9月25日星期一00:00:00 GMT-0400',val:23},
{关键字:2013年9月23日星期一00:00:00 GMT-0400',val:54}
];
//首先,使用reduce将数据转换为地图
让计数=对象减少((上一个,当前)=>{
让count=prev.get(curr.key)| 0;
上一设置(当前键、当前值+计数);
返回上一个;
},新地图());
//然后,将counts对象映射回数组
让reducedObjArr=[…计数].map([key,value])=>{
返回{key,value}
})

console.log(reducedobjar)
prev
,即
累加器
,实际上是一个对象,作为最后一个参数传递给函数。

在提供的示例中,累加器是对象的一个实例(而不是一个数字),它作为最后一个参数()传递以减少。

是的原型的一部分

由于
map\set
的作用,您可以通过直接返回map来简化reduce

要获得格式化结果,可以使用with mapping函数


使用
prev
curr
可能会让您有点恼火。如果您改为使用
map
item
,您可能会得到更好的变量类型

let objArr=[{key:'Mon Sep 23 2013 00:00:00 GMT-0400',val:42},{key:'Mon Sep 24 2013 00:00:00 GMT-0400',val:78},{key:'Mon Sep 25 2013 00:00:00 GMT-0400',val:23},{key:'Mon Sep 23 2013 00:00:00 GMT-0400',val:54}],
计数=objArr.reduce(
(map,item)=>map.set(item.key,item.val+(map.get(item.key)| 0)),
新地图
),
reducedobjar=Array.from(counts,([key,value])=>({key,value}));
console.log(reducedobjar)
。作为控制台包装{最大高度:100%!重要;顶部:0;}
就我所知,累加器(prev)只是一个数字

不,情况并非总是这样。如果在的
initialValue
参数中指定了值,累加器(在本例中为
prev
)将采用该初始值的值

示例中的初始值是
newmap()
,它是一个映射对象。包括
.get
方法,该方法用于从地图对象检索特定值(类似于对象键值对检索)


因此,您的
.get
方法引用的是
映射
对象,而不是数字。

在您的代码中,它是<代码>新映射()
,初始值不是数字!如果你投了反对票,请说明原因或编辑问题。我看不出有任何理由这么做。