仅显示Object.keys的第一个元素

时间:2018-05-29 18:20:48

标签: json angular

我已经制作了一个JSON请求,因此我可以将对象置于Angular2中。但我想只显示前15个元素,然后如果它工作在InfiniteScroll上重复相同的过程。所以这是我的代码之一。

  setList(informes) {
  if (informes) {
     for (let id of Object.keys(informes)){
         this.count = 0;
         for (let i = 0; i < 15; i++) {
            let node = informes[id];
            this.informes.push(node[this.count]);
            console.log (id);
            this.count++;
          }
      }
   }
}

显然它不起作用,它不断给我所有元素,如每个15次。我知道,但另一方面,如果我反其道而行之。

setList(informes) {
  if (informes) {
     for (let i = 0; i < 15; i++) {
        for (let id of Object.keys(informes)){
        let node = informes[id];
        this.informes.push(node[this.count]);
        console.log (id);
        }
        this.count++
      }
   }
}

它计算总节点数。

我想要的只是显示前15个元素。然后在我的其他函数infiniteScroll中重复代码(我将自己做,它可以工作)。

任何建议都将受到赞赏。

更新:

这是构造函数:

 constructor(public navCtrl: NavController, public navParams: NavParams, public nav: NavController, public http: Http, public sanitizer: DomSanitizer) {
    this.dataUrl = 'https://myurl.com/ionic/'; //example
    if (this.dataUrl) {
         this.http.get(this.dataUrl)
            .map(res => res.json())
            .subscribe(informes => this.setList(informes));
         }
    }

更新2:

代码效果很好。 我不得不修改一些东西才能使它工作。我会更新脚本,以便它可以帮助某人。

    setList(informes) {
  if (informes) {
     let ids = Object.keys(informes);
        ids.forEach((id, index) => {
           if(index < 15){
               let node = informes[id];
               this.informes.push(node);
               this.count++;
               console.log(this.count);
           }
      });
   }
}

goToNodeInformes(node){
   this.navCtrl.push(NodeInformesPage, {'node':node.nid});
}

doInfinite(infiniteScroll, informes) {
    informes = this.informes;
    setTimeout(() => {
      let ids = Object.keys(informes);
        ids.forEach((id, index) => {
           if(index < 15){
               let node = informes[id];
               this.informes.push(node);
               this.count++;
               console.log(this.count);
           }
      });
      infiniteScroll.complete();
    }, 500);
  }

}

我将想象我不必重复相同的节点(将更新)但计数器有效!

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找这样的东西:

let keys = Object.keys(informes);

keys.foreach((key, index) => {
   if(index < 15){
       let node = informes[key];
       this.informes.push(node);
       console.log(informes[key]);
   }
});