如何基于angular2中的当前UserID过滤数据集

时间:2018-10-10 10:45:11

标签: angular typescript

我有一组数据,因为我必须用我的userId过滤数据并仅在列表中显示。 请帮忙。 TS:

getDicomList() {
    this.service.getDicomList(params)
      .subscribe((res) => {
        this.dicomLists = res.Body.Data.dicomList;
        console.log(this.dicomLists, "shghds")
        let ids = this.dicomLists.map(item => item.CreatedBy);
       let filteredData = this.dicomLists.filter(item => ids.indexOf(item.CreatedBy) === -1);
      })

      i need to compare with my this.userId and item.CreatedBy

控制台:

(10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
0: {StudyInstanceUID: "999.999.1.19941016.83000", StudyID: "ACC99", SeriesNumber: "2", AcquisitionNumber: "0", InstanceNumber: "101", …}
1: {StudyInstanceUID: "1.3.6.1.4.1.18047.1.11.10021841473447061672", StudyID: "", SeriesNumber: "3", AcquisitionNumber: "1", InstanceNumber: "49", …}
2: {StudyInstanceUID: "1.3.6.1.4.1.18047.1.11.10021841473447061672", StudyID: "", SeriesNumber: "3", AcquisitionNumber: "1", InstanceNumber: "49", …}
3: {StudyInstanceUID: "1.2.840.113619.2.55.3.604637917.369.1487635615.91", StudyID: "35112", SeriesNumber: "7", AcquisitionNumber: "1", InstanceNumber: "3", …}
4: {StudyInstanceUID: "1.3.6.1.4.1.18047.1.11.10021841473447061672", StudyID: "", SeriesNumber: "3", AcquisitionNumber: "1", InstanceNumber: "49", …}
5: {StudyInstanceUID: "1.2.840.113619.2.55.3.604637917.369.1487635615.91", StudyID: "35112", SeriesNumber: "7", AcquisitionNumber: "1", InstanceNumber: "5", …}
6: {StudyInstanceUID: "1.2.840.113619.2.55.3.604637917.369.1487635615.91", StudyID: "35112", SeriesNumber: "7", AcquisitionNumber: "1", InstanceNumber: "1", …}
7: {StudyInstanceUID: "1.2.840.113619.2.55.3.604637917.369.1487635615.91", StudyID: "35112", SeriesNumber: "7", AcquisitionNumber: "1", InstanceNumber: "4", …}
8: {StudyInstanceUID: "1.2.840.113619.2.55.3.604637917.369.1487635615.91", StudyID: "35112", SeriesNumber: "7", AcquisitionNumber: "1", InstanceNumber: "4", …}
9: {StudyInstanceUID: "1.3.6.1.4.1.18047.1.11.10021841473447061672", StudyID: "", SeriesNumber: "4", AcquisitionNumber: "1", InstanceNumber: "49", …}
length: 10
__proto__: Array(0)

5 个答案:

答案 0 :(得分:2)

这样做,

getDicomList() {
    this.service.getDicomList(params)
      .subscribe((res) => {
        this.dicomLists = res.Body.Data.dicomList;
        console.log(this.dicomLists, "shghds")
        //let ids = this.dicomLists.map(item => item.CreatedBy);
       let filteredData = this.dicomLists.filter(item => this.userId == item.CreatedBy);
      })

答案 1 :(得分:2)

您只需要进行少量修改。

getDicomList() {
    this.service.getDicomList(params)
      .subscribe((res) => {
        this.dicomLists = res.Body.Data.dicomList;

       let filteredData = this.dicomLists.filter(item => item.CreatedBy === this.userId);
      })

答案 2 :(得分:1)

您可以尝试以下代码

let filteredData = this.dicomLists.filter(item => (this.userId == item.CreatedBy));

答案 3 :(得分:0)

您应始终放置空支票

        getDicomList() {
        this.service.getDicomList(params)
          .subscribe((res) => {
                 this.dicomLists = [];
                 // Null check else it will throw errors
                 if(res.body && res.body.Data 
                      && res.body.Data.dicomList
                      && res.body.Data.dicomList.length){
                   this.dicomLists = res.Body.Data.dicomList;
                 }
           return this.dicomLists.filter(item => this.userId == item.CreatedBy);
          })

答案 4 :(得分:0)

this.service.getDicomList(params)
  .subscribe((res) => {
    this.dicomLists = res.Body.Data.dicomList;
    console.log(this.dicomLists, "shghds")
    let ids = this.dicomLists.map(item => item.CreatedBy); // the map is used to filter the properties of the object if necessary
   let filteredData = this.dicomLists.filter(item => ids.indexOf(item.CreatedBy) === -1); // Filter YES but the criteria in the filter is not good
  })

就像那样

this.service.getDicomList(params).subscribe((res) => {
    this.dicomLists = res.Body.Data.dicomList;
    this.dicomLists.filter(item => item.CreatedBy === this.userId);
})