【问题标题】:incrementing an object in a while loops在while循环中增加一个对象
【发布时间】:2022-01-22 17:27:02
【问题描述】:

输入: ["doc", "doc", "image", "doc(1)", "doc"]

输出: ["doc", "doc(1)", "image", "doc(1)(1)", "doc(2)"]

问题:

{used[name]++}这部分代码在骗我。

我不明白行以及我如何不将 1 分配给第一件事

代码在反复试验中以应有的方式工作;但我很难将我的大脑包裹在这个循环中。

我的理解:

我们遍历名称,然后是每个以 docs 开头的名称;我们将 newName 分配给 doc1

我尝试了什么:

used[newName] = 6;

结果: [文档,文档(6),图像,文档(1),文档(7)]

这最终让我更加困惑。时间不早了,我可能需要睡一会儿。


const solution = names => {
    const used = {};
    return names.map(name => {
        let newName = name;
        while (used[newName]) {
            newName = `${name}(${used[name]++})`;
        }
        used[newName] = 1;
        return newName;
    });
};

【问题讨论】:

    标签: javascript object while-loop increment


    【解决方案1】:

    第一次遇到名称used[newName]undefined,因此while 循环甚至没有启动,而是返回newName。下次遇到时,你已经有了user[newName]=1,所以在名字后面加上(1),以此类推。

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多