在 while 循环中增加一个对象

incrementing an object in a while loops

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

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

问题:

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

我不明白 line 以及我为什么不将 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;
    });
};

第一次遇到名字used[newName]undefined,所以while循环甚至没有开始,返回newName。下次遇到时,你已经有了user[newName]=1,所以(1)被追加到名称后面,依此类推。