2016-09-26 2 views
1
{ 
    "ordersList": [{ 
     "ordersDto": { 
      "testMast": { 
       "testId": 9, 
       "testName": "HIV" 
      }, 
      "sample": { 
       "sampleId": 9050 
      } 
     } 
    }, { 

     "ordersDto": { 
      "testMast": { 
       "testId": 1, 
       "testName": "VDRL" 
      }, 
      "sample": null 
     } 
    }, { 

     "ordersDto": { 
      "testMast": { 
       "testId": 11, 
       "testName": "HIV1&2" 
      }, 

      "sample": null 
     } 
    }, { 
     "ordersDto": { 
      "testMast": { 
       "testId": 3, 
       "testName": "HCB" 
      }, 

      "sample": { 
       "sampleId": 9050 
      } 
     } 
    }, { 

     "ordersDto": { 
      "testMast": { 
       "testId": 10, 
       "testName": "HIV 1&2 Test1" 
      }, 

      "sample": { 
       "sampleId": 9051 
      } 
     } 

    }] 
} 

Notwendigkeit, nicht doppelte Proben-ID in einem Array zu holen,Schlüsselwertpaar Speicher und Iteration in Winkel

sample Id = 9050, 9051. 

Auch benötigen I Testnamen für jede Probe Id, nach doppelten Proben-ID der holen, ich brauche um den Testnamen in dasselbe Array einzufügen. auch

testName = HIV, HCB // for 9050 
testName = HIV 1&2 Test1" // for 9051 

Wie kann ich bevölkere diese beiden Arrays in einem iteration.Had den Testnamen zu holen basierend auf ID-Wert Probe. Gibt es ein Schlüsselwertpaar, das in Winkel gespeichert wird?

Hatte versucht mit unten Code, der nicht wie erwartet funktioniert.

if (vm.ordersList== 1) { // incase of one sample Id 
       res.push(vm.ordersList[0].ordersDto.testMast.testName.slice(0, 4)); 
       sampleId.push(angular.copy(vm.ordersList[0].ordersDto.sample.sampleId)); 
       sampleRcvdDate.push(angular.copy(vm.ordersList[0].ordersDto.sample.sampleRcvdOn)); 
       } else { 
       angular.forEach(vm.ordersList, function(item) { // multiple sample id's 
        if (item.sample != null) { 
         if(item.sample.sampleId != null && sampleId.indexOf(item.sample.sampleId) == -1){ 
         res.push(item.testMast.testName.slice(0, 4)); 
         sampleId.push(angular.copy(item.sample.sampleId)); 
         sampleRcvdDate.push(angular.copy(item.sample.sampleRcvdOn)); 
         } 
        } 
       }) 
       } 
+0

Sie können das Schlüssel-Wert-Paar in der Karte speichern – Hmahwish

+0

Kann ich denselben Kartenwert nach einmaligem Einfügen aktualisieren? – user630209

+0

Ja, Sie können eine sampleId als Schlüssel und ein Array von testName – Hmahwish

Antwort

2

sampleIdTestNameMap wird sampleId als Schlüssel und testName-Liste als Wert haben.