Angular2 / Ionic - 在数组中查找重复项并组织它们

时间:2016-05-02 23:54:05

标签: javascript json angular ionic2 swiper

我有一个包含JSON数组中多个元素的数组, 我可以通过执行category.language来访问(JSON中还有一些其他元素可以访问,例如执行category.namecategory.photo等)

English, Russian, French, Russian, English

我想要做的是将重复项彼此放在一起并最终得到:

English, Russian, French

如果不删除重复项,删除它们也会删除其他相关元素,例如category.name ...,这些元素具有其他不同的值。

目前我正在寻找一个REST API,以下是我的代码:

Page.js

    this.menuPages = {
          pagination: '.swiper-pagination',
          //need to have 1 or more (it should some how dynamic depending on the number of the unique items, i.e. sometimes should 1 slide per view, sometimes 10 slides per view )
          slidesPerView: '1',
          paginationClickable: true,
          paginationBulletRender: function (index, className) {
          console.log('print now2 : '+storeCategory[index]); 
          return '<span class="' + className + '">' + storeCategory[index] + '</span>';
          }
      }

page.html中

  <ion-slides pager [options]="Pages">
          <ion-slide *ngFor="#category of categories">   
     //put the duplicates with each other, to have one element or more in every slide(page)
          <ion-row>
          <ion-col>
          <div class="title">{{category.name}</div>
          <div class="subTitle"><br>{{category.photo}}</div>
          </ion-col>
          </ion-row>
          </ion-slide>
    </ion-slides>

我认为通过page.htmlpage.js玩游戏应该可以解决问题!我希望你能提出一些想法来解决它!

2 个答案:

答案 0 :(得分:1)

我不清楚你究竟在问什么,但你可以使用ES6套装来确保每个条目的唯一性。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set

答案 1 :(得分:1)

我不确定我得到了你的要求,但这里有一些基于我理解的代码:

var pages = {}; // create object to hold the collections
categories.map(cat=>{
        if (!pages[cat.language])
            pages[cat.language]=[];  // create a list for every language
        return cat;
    })
    .forEach(cat=>pages.push(cat)); // push every category to the related list

pages对象将具有以每种语言命名的属性:

pages = {
        English:[
            {language:'English',name:'...',photo:'...'},
            {language:'English',name:'...',photo:'...'}
        ],
        Russian:[
            {language:'Russian',name:'...',photo:'...'},
            {language:'Russian',name:'...',photo:'...'}
        ]
    }