Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 算法-文件命名_Javascript - Fatal编程技术网

Javascript 算法-文件命名

Javascript 算法-文件命名,javascript,Javascript,系统将按文件名的顺序为您提供所需文件名的数组 创造由于两个文件不能有相同的名称,因此 稍后将以(k)的形式添加到其名称中,其中k是 不使用获取的名称的最小正整数 然而 返回将提供给文件的名称数组 范例 对于名称=[“doc”、“doc”、“image”、“doc(1)”、“doc”],输出 应为文件命名(名称)=[“文档”、“文档(1)”、“图像”、“文档(1)(1)”, “文件(2)”] 一个人发布了这个解决方案: const fileNaming = names => { co

系统将按文件名的顺序为您提供所需文件名的数组 创造由于两个文件不能有相同的名称,因此 稍后将以(k)的形式添加到其名称中,其中k是 不使用获取的名称的最小正整数 然而

返回将提供给文件的名称数组

范例

对于名称=[“doc”、“doc”、“image”、“doc(1)”、“doc”],输出 应为文件命名(名称)=[“文档”、“文档(1)”、“图像”、“文档(1)(1)”, “文件(2)”]

一个人发布了这个解决方案:

const fileNaming = names => {
    const used = {};
    return names.map(name => {
        let newName = name;
        while (used[newName]) {
            newName = `${name}(${used[name]++})`;
        }
        used[newName] = 1;
        return newName;
    });
};
我很难理解
块的情况

used
是一个空对象

newName
是一个新变量,它等于
names
数组中的当前项

used[newName]
如何解析为一个数字<代码>已使用
永远不会设置为空对象以外的任何对象

这是
console.log(使用[newName])

使用此输入:

["dd", 
 "dd(1)", 
 "dd(2)", 
 "dd", 
 "dd(1)", 
 "dd(1)(2)", 
 "dd(1)(1)", 
 "dd", 
 "dd(1)"]

在JavaScript中,
{}
是一个空对象,因此,它可以包含任意数量的键值对。未定义的键具有值
undefined
,测试时其计算结果为
false
。但是,任何非零、非NaN数值的计算结果将为
true

console.log({}[“一个不存在的密钥”])//未定义
while(未定义){
console.log(“永远不应该打印”);//永远不执行
}
而({}[“不存在的密钥”]){
console.log(“永远不应该打印”);//永远不执行
}
如果(1){
log(“正数为真”);//写入控制台

}
一个人发布了此解决方案
令人担忧。您提出自己的解决方案了吗?请在
控制台.log()
中输出
name
newName
的值。我有一种感觉,你可能会在看到循环后理解它。你说
used永远不会设置为空对象以外的任何对象。
。但是在示例代码中,有一行:
used[newName]=1。这与你的说法相矛盾也许这是你理解循环的关键?我没有想出我自己的解决方案。该平台展示了其他用户的答案,这是投票最多的。提示:搜索“后缀增量运算符”。我的后续可能是“错误的”,但请耐心等待<代码>已使用
是空对象。我们没有添加任何内容。
使用[newName
是否总是未定义?它是如何返回真实值的?但是,我知道有一个概念我并不完全理解,因此感谢您允许我使用它。Hahay您可以通过
对象[“key”]在JS对象中添加或设置键值项=value
,相当于
对象。key=value
。然而,
[]
符号允许使用一个作为变量的键:
让foo=“quix”;object.foo=“bar”
相当于
对象[“foo”]=“bar”
,而
让foo=“quix”;对象[foo]=“bar”
相当于
对象[“quix”]=“条形图”