这个Javascript代码是什么意思?

时间:2017-05-18 23:58:19

标签: javascript

我正在尝试进行算法挑战。我从一个完整的答案中看到了这段代码。我是javascript的新手,所以我不完全确定代码。我知道代码的第一部分非常接受输入并将其转换为地图。然后初始化一个matchingPair数组和一个计数器。我几乎迷失在for循环部分。不太确定matchingPairs[""+c[i]] = matchingPairs[""+c[i]] || 0;的作用。我猜测for循环是将匹配对的所有元素添加到数组并添加到计数器。

function main() {
var n = parseInt(readLine());
c = readLine().split(' ');
c = c.map(Number);

var matchingPairs = {};
var matchingPairCount = 0;

for(var i=0; i< c.length; i++) { 
    matchingPairs[""+c[i]] = matchingPairs[""+c[i]] || 0;
    matchingPairs[""+c[i]] += 1;

    if (matchingPairs[""+c[i]] % 2 === 0) {
        matchingPairCount += 1;
    }
}
console.log(matchingPairCount);

}

2 个答案:

答案 0 :(得分:0)

一个更简单的例子

a = {}
a["b"] = a["b"] || 0
console.log(a) // {b: 0}

a设置为空对象。 a["b"]尚未设置为任何内容,因此在访问时会返回undefined

未定义是假的 - 所以这有效地将a["b"]设置为0

再举一个例子;

a = {b: 5}
a["b"] = a["b"] || 0
console.log(a)  // {b: 5}

这个例子的唯一区别是a["b"]是真实的(即,它返回5而不是未定义)。

这是一种将变量设置为值的javascript方式,前提是它尚未设置为其他

答案 1 :(得分:0)

提供了一串空格分隔的数字。

计算每个数字的计数。

每次计数均匀时,matchingPairCount会递增。

简而言之:它正在计算成对的匹配数字。

n未使用?