创建一个对象以组合重复的文件

时间:2018-02-24 04:17:32

标签: javascript

我是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"]}

我想创建另一个对象并基本上组合相同的名称文件,以告诉用户相同的文件存储在两个不同的位置。

预期输出为:

{"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"]}

1 个答案:

答案 0 :(得分:1)

您的输入

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
  • 其次,检查result是否已有与您的文件名匹配的属性。如果它没有创建这样的属性,并将其初始化为数组。
  • 最后,将对象的键(文件路径)推送到相应的数组。