我是 JS 新手,有以下对象,其中 key
是文件路径,value
是文件名,>添加时间。文件重复且名称相同,即 JackFusco_JasperGeminids.jpg 和 Goldman-Sachs-Suggested-Reading-List.pdf
{"/home/JackFusco_JasperGeminids.jpg": ["JackFusco_JasperGeminids.jpg", "2018-02-23T02:43:21"],
"/Photos/JackFusco_JasperGeminids.jpg": ["JackFusco_JasperGeminids.jpg", "2018-02-23T02:43:42"],
"/home/Goldman-Sachs-Suggested-Reading-List.pdf": ["Goldman-Sachs-Suggested-Reading-List.pdf", "2018-02-23T02:01:24"],
"/Photos/Sample Album/Goldman-Sachs-Suggested-Reading-List.pdf": ["Goldman-Sachs-Suggested-Reading-List.pdf", "2018-02-23T02:01:56"]}
我想创建另一个对象并组契约(Contract)名文件,基本上是为了告诉用户同一个文件存储在两个不同的位置。
预期输出是:
{"JackFusco_JasperGeminids.jpg": ["/home/JackFusco_JasperGeminids.jpg", "2018-02-23T02:43:21"], ["/Photos/JackFusco_JasperGeminids.jpg", "2018-02-23T02:43:42"]}
{"Goldman-Sachs-Suggested-Reading-List.pdf": ["/home/Goldman-Sachs-Suggested-Reading-List", "2018-02-23T02:01:24"], ["/Photos/Sample Album/Goldman-Sachs-Suggested-Reading-List.pdf", "2018-02-23T02:01:56"]}
最佳答案
您的输入
var input = {"/home/JackFusco_JasperGeminids.jpg": ["JackFusco_JasperGeminids.jpg", "2018-02-23T02:43:21"],
"/Photos/JackFusco_JasperGeminids.jpg": ["JackFusco_JasperGeminids.jpg", "2018-02-23T02:43:42"],
"/home/Goldman-Sachs-Suggested-Reading-List.pdf": ["Goldman-Sachs-Suggested-Reading-List.pdf", "2018-02-23T02:01:24"],
"/Photos/Sample Album/Goldman-Sachs-Suggested-Reading-List.pdf": ["Goldman-Sachs-Suggested-Reading-List.pdf", "2018-02-23T02:01:56"]};
解决方案(定义“输入”后)
var result = {};
for (var key in input){
if(!result.hasOwnProperty(input[key][0])) result[input[key][0]] = [];
result[input[key][0]].push(key);
}
- 首先初始化一个新的 JavaScript 对象
结果
- 其次,检查
result
是否已有与您的文件名匹配的属性。如果没有,您创建这样的属性,并将其初始化为数组。 - 最后,将对象的键(文件路径)推送到相应的数组。
关于javascript - 创建一个对象来合并重复文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48959319/