首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在这种情况下使用括号表示法有效?

为什么在这种情况下使用括号表示法有效?
EN

Stack Overflow用户
提问于 2020-09-15 20:08:25
回答 1查看 70关注 0票数 0

我正在研究Javascript,我在Hackerrank中遇到了这个挑战(必须返回多少双袜子),我无法解决,所以我寻找答案,我找到了这个答案,但是我不明白为什么它会工作,比如,为什么在对象袜子中使用括号表示法来返回一些数字和一些未定义的数字?袜子应该是空的。

代码语言:javascript
复制
function sockMerchant(n, arr) {
    // var sorted = arr.sort();

    let socks = {}
    let pairs = 0;
    for (let i=0; i < n; i++) {
        // console.log(socks[arr[i]])


        socks[arr[i]] = socks[arr[i]] + 1 || 1;


        if (socks[arr[i]] % 2 === 0) {
            pairs += 1
        }
    }
    return console.log(pairs)
}

sockMerchant(11, [10, 20, 20, 10, 10, 30, 50, 10, 20, 50, 50])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-15 22:09:16

让我们分解一下这段代码:

我们打电话给sockMerchant(11, [10, 20, 20, 10, 10, 30, 50, 10, 20, 50, 50])

  • n是数字或步骤,
  • arr是数组

凉爽的。

我们设置默认值

代码语言:javascript
复制
let socks = {} //<- socks mapping object [sock_name, count]
let pairs = 0;

现在,我们从0循环到n,并执行以下操作:

  • 增加了为

找到的袜子数量

代码语言:javascript
复制
socks[arr[i]] = socks[arr[i]] + 1 || 1;

  • 如果这个数字是偶数->凸点对,则为

让我们进行一些迭代:

  • socks10 =1

双对= 0

  • socks20 =1

双对= 0

  • socks20 = 1+1 == 2

双对= 1

  • socks10 = 1+1 == 2

双对= 2

  • socks10 = 2+1 == 3

对=2

在对象/映射上使用括号符号既可以对值作出反应,也可以设置/创建值

最后但同样重要的是:

console.log总是返回未定义的。

使用return pairs

代码语言:javascript
复制
function sockMerchant(n, arr) {
    // init
    let socks = {}
    let pairs = 0;
    for (let i=0; i < n; i++) {
        // bump sock 'arr[i]' count
        socks[arr[i]] = socks[arr[i]] + 1 || 1;

        // check if has a pair
        if (socks[arr[i]] % 2 === 0) {
            pairs += 1
        }
    }

    return pairs
}

foundPairs = sockMerchant(11, [10, 20, 20, 10, 10, 30, 50, 10, 20, 50, 50])

// foundPairs = 4

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63909174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档