【问题标题】:How to filter Javascript array of Objects to distinct values of one Column如何将对象的Javascript数组过滤为一列的不同值
【发布时间】:2019-11-08 22:42:39
【问题描述】:

我有一个“专辑”对象的 Javascript 数组,其中包含专辑标题、年份、艺术家、描述等数据

我想创建一个只保存不同年份的新字符串数组。

我尝试了一种独特的管道

https://www.npmjs.com/package/ng2-pipes#installation

但是没有运气。

我的目标是有一个“按年份过滤”下拉列表,其中包含唯一年份的字符串数组

import {NgPipesModule} from 'ngx-pipes';

<button ngbDropdownItem *ngFor="let album of filteredAlbumListYear | unique " [value]="">{{album.Year}}</button>

我来了

2019
2019
2019
2019
2018
2018
2017

在我想要的下拉列表中

2019
2018
2017

【问题讨论】:

标签: javascript angular


【解决方案1】:

试试这个代码。它会帮助你。

     arr = [2019,2019,2019,2019,2018,2018,2017];
     uniqueArray = Array.from(new Set(arr));
     console.log(uniqueArray)

【讨论】:

    【解决方案2】:

    您可以使用Set 只允许唯一和Spread syntax

         let list = [2019,2019,2019,2018,2018,2017]; 
         let result = [...new Set(list)]; 
         console.log(result)
       

    【讨论】:

      【解决方案3】:

      在 Javascript 中,您可以按照以下代码进行操作

        array= [2019,2019,2019,2018,2018,2017]; 
        const newArray = this.array.filter((year,index)=> this.array.indexOf(year)===index);
        console.log(newArray);
      

      【讨论】:

        【解决方案4】:

        您可以在 javascript 中使用 Set 来存储唯一值。无论您将项目推送到集合的次数如何,它都只会有一个副本。

        如果您的filteredAlbumListYear 是一个仅包含年份的数组,那么您可以直接从filteredAlbumListYear 创建一个新集合。

        this.filteredAlbumListYear = [...new Set(this.filteredAlbumListYear)]
        

        这将根据年份创建一个新 Set,将其转换为数组并分配回filteredAlbumListYear

        或者您可以直接从您的专辑列表中创建一个新数组。

        const uniqueYearsSet = new Set();
        this.albums.forEach(album => this.uniqueYears.add(album.year));
        this.uniqueYears = [...uniqueYearSet];
        

        然后在你的 *ngFor 循环中使用uniqueYears

        【讨论】:

          【解决方案5】:

          var 数组=[2019,2019,2019,2018,2018,2017]; 数组 =array.filter((year,index)=>array.indexOf(year)===index); console.log(array);


          【讨论】:

            【解决方案6】:

            这是另一种解决方案。

             arr = [2019,2019,2019,2019,2018,2018,2017];
             uniqueArray = arr.reduce((unique,item)=>unique.includes(item)?unique:[...unique,item],[])
             console.log(uniqueArray)
            

            【讨论】:

              猜你喜欢
              • 2021-01-30
              • 1970-01-01
              • 2020-07-21
              • 2020-07-04
              • 1970-01-01
              • 2018-04-02
              • 2020-04-22
              • 1970-01-01
              • 2020-02-17
              相关资源
              最近更新 更多