在这段代码中执行三元运算符的真值在哪里?

这个编码问题的一些背景。我们的 termTopics 函数需要计算这些主题在调查中被提及的次数,然后按以下顺序返回一个包含提及次数的数组:智慧城市、艺术资助和交通。


const termTopics = (interviews) => {

  const count = interviews.reduce((acc, cv) => {

    return {...acc, [cv]: acc[cv] ? acc[cv]+1 : 1}

  }, {})

  return [count['smart city'], count['arts funding'], count['transportation']];

}

我无法理解的是扩展运算符,以及它如何为三元运算符创建一个真实的语句来操作。


慕姐4208626
浏览 194回答 3
3回答

潇潇雨雨

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    }  }, {})

慕桂英4014372

展开语法和条件运算符在这里完全无关。让我们在这里来回展开:整个条件运算符表达式为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 : 1if (acc[cv]) {  result[cv] = acc[cv]+1;} else {  result[cv] = 1;}

holdtom

真(或假)值来自这里:acc[cv]如果有值,则将其加一,否则将其设置为一。acc[cv]是一个计算属性,并将查找 的值cv作为 的属性acc,例如acc['smart city']。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java