3 回答
TA贡献1833条经验 获得超4个赞
const count = interviews
.reduce((resultObject, interview) => {
// We are creating an object through the reduce function by iterating through the interviews array.
// At each iteration we will modify the result object according to the current array interview item value
return {
// First we copy the object we have so far
...resultObject,
// Then we set the property corresponding to the current item
[interview]: resultObject[interview]
// If it is not the first time we have seen this item, the object property already exists and we update it by adding one to its value
? resultObject[interview] + 1
// Otherwise we create a new property and set it to one
: 1
}
}, {})
TA贡献1871条经验 获得超13个赞
展开语法和条件运算符在这里完全无关。让我们在这里来回展开:
整个条件运算符表达式为
acc[cv] ? acc[cv]+1 : 1
,因此它将仅根据acc[cv]+1
或1
基于是否acc[cv]
为真来解析。条件运算符的结果分配给对象中的属性。
属性名称是
[cv]
-将等于 的当前值的计算属性名称cv
。属性名称和值被添加到对象中。
其余的对象值是
...acc
或扩展到对象中的对象的当前值。
实际上,{...acc, [cv]: acc[cv] ? acc[cv]+1 : 1}
是以下 ES5 代码的较短版本:
var result = {};
//{...acc}
for (var key in acc) {
result[key] = acc[key];
}
//[cv]: acc[cv] ? acc[cv]+1 : 1
if (acc[cv]) {
result[cv] = acc[cv]+1;
} else {
result[cv] = 1;
}
TA贡献1805条经验 获得超10个赞
真(或假)值来自这里:acc[cv]
如果有值,则将其加一,否则将其设置为一。
acc[cv]
是一个计算属性,并将查找 的值cv
作为 的属性acc
,例如acc['smart city']
。
添加回答
举报