这个Javascript代码是什么意思?
问题描述:
我想要做一个算法的挑战。我从一个完整的答案中看到了这段代码。我是新来的JavaScript,所以我不完全确定的代码。我知道代码的第一部分很大程度上需要输入并将其输入到地图中。然后初始化一个匹配的对数组和一个计数器。我几乎迷失在for循环部分。不太确定matchingPairs[""+c[i]] = matchingPairs[""+c[i]] || 0;
做什么。我猜测for循环将匹配对的所有元素添加到数组并添加到计数器。这个Javascript代码是什么意思?
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);
}
答
一个更简单的例子
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"]
是truthy(即,其返回5而不是未定义)。
这是一个JavaScript变量设置方法,只有当它还没有被设置为时,该值才会变为值。
答
提供了一个由空格分隔的数字字符串。
计算每个数字的计数。
每次计数是偶数,然后matchingPairCount
递增。简而言之:它正在计数匹配数字对。
n
不使用?
尝试'var x = {}; x ['a'] = x ['a'] || 0; console.log(x);'看看会发生什么 - 当然,下一行也可以包含在这里...'x ['a'] =(x ['a'] || 0)+ 1' –
@ Andy.W你知道python吗? 'x ['a'] ||如果没有属性'a'(或者属性评估为'false'),0'表现为'defaultdict',评估为'0'。 '''+ x'是'String(x)'的缩写。 –
出于兴趣是这个挑战网站?如果是这样的话? – Ben