gpt4 book ai didi

带有对象的 Javascript 三元运算符

转载 作者:行者123 更新时间:2023-11-29 18:11:21 24 4
gpt4 key购买 nike

我遇到了一段我想弄明白的代码,这段代码基本上存储了一个单词在文本文档中出现的次数,所以函数 countWordsIntext 接受了所需的文本并显示单词和文本中出现的次数,例如会:3但是:5非常:6

在查看计算文本中单词的函数时,我无法弄清楚条件三元运算应该如何工作。非常感谢解释

var wordCounts = {};

function countWordsInText(text) {
var words = text.toString()
.toLowerCase()
.split(/\W+)
.sort();
for(var index in words) {
var word = words[index];
if(word) {
wordCounts[word] =
(wordCounts[word]) ? wordCounts[word] + 1 : 1;
}
}
}

function display()
{
for (var index in wordCounts)
console.log(index + ': ' + wordCounts[index]);
}

我不明白 wordCounts[word] 对象属性是如何更新的。

最佳答案

说你有

var foo = {};

让你感到困惑的是

foo.bar = foo.bar ? foo.bar + 1 : 1; // line A

问问自己

  1. 开头的foo.bar是什么?它是undefined,我们没有给foo一个属性bar
  2. 第一次执行 A 行后,foo.bar 是什么?它是1foo.barundefined 这是 falsy 所以三元运算符给了我们 1
  3. 第二次执行 A 行后,foo.bar 是什么?是2foo.bar1真实,所以三元运算符返回给我们 foo.bar + 1

可以重复 A 行,直到数字用完或世界爆炸

这样写是解决undefined + 1问题的一种方法,它会给出NaN


一个同样有效的解决方案(我个人觉得读起来更清晰)是

foo.bar = (foo.bar || 0) + 1;

关于带有对象的 Javascript 三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27113329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com