使用一个变量将对象多个深度索引

时间:2018-05-12 09:07:59

标签: javascript arrays object

我有一个对象:

Map<String, List<Something>> map1=.....
Map<String, Integer> map2;
map2=map1.entrySet().stream().collect(Collectors.toMap(p-> p.getKey(), p->getValue().size()));

我需要访问时间属性。

由于函数的性质,我只能访问基础对象。即。

export class WriterComponent implements OnInit {
   imageLink:string;
   constructor() { }
   ngOnInit() {
     this._usersService.getS3Hash().subscribe(resp=>{
        // this.options['imageUploadToS3'] = resp; // you are assigning your response to `imageUploadToS3` which doesn't exist on options object. so changes it as
        this.options.events['imageUploadToS3'] = resp;
     });
   }

   public options:Object={
     heightMin:300,
     events:{
        'imageUploadToS3': (e,editor,link,key,response) => {    //Second change your function with arrow function here
         // save the link
         this.imageLink=link;
   }
}

我不想重写该函数,因为主要用例是访问一级深度的对象。 I.E.当天的财产。我有什么方法可以做到这一点吗?

我唯一能想到的是:

object.day.time

但这没效果。

编辑:我最初有一个对象作为访问的参数,这是错误的。在那种情况下,我可以将object.day作为值传递

2 个答案:

答案 0 :(得分:0)

你可以这样做一些时间来转到这个time属性:

&#13;
&#13;
var object = {
   day: {
      time: (new Date()).getTime()
   }
};

var properties = ["day","time"];

function access(object,properties){
   for(var index=0; index < properties.length; index++){
      // go to deeper into object until your reached time 
      object = object[properties[index]];
   }
   // here we have reached time and can do something with it or just returning it
   return object;
}

console.log(access(object,properties));
&#13;
&#13;
&#13;

希望这会对你有所帮助。

答案 1 :(得分:0)

当你调用这个函数时,传递object.day而不仅仅是基础对象,这意味着函数中的对象已经是object.day所以如果你做object.time,你应该得到这个值。