2017-06-05 5 views
0

Ich bin eine kleine Anwendung in Vuejs wo ich eine Antwortdaten bekommen, und ich bin es auf eine Variable zuordnen, ich habe ein paar Elemente, die leer hat Array, also während des Mappings möchte ich den Zustand überprüfen und entsprechend abbilden. Hier ist mein Code:Wie zu verwenden, wenn Anweisung in Karte in Javascript/vuejs

this.model = a.map(i => Object.assign({ 
    'id': i.id, 
    'meeting_date': i.schedule, 
    'meeting_call': i.type, 
    'event_type': i.event_type, 
    'venue': i.venue, 
    'with_client': i.with_client 
},{ 
    if(i.meeting.meeting_summaries) 
    { 
     'meeting_summaries': i.meeting_summaries.map(ms => ({ 
      client_name: ms.client_name, 
      nature: ms.nature, 
      action: ms.action, 
      mention: ms.user_id, 
      feedback: ms.feedback 
     })) 
    } 

}, 

Antwort

1

map ist rein funktional, es nicht ändern die Elemente stattdessen eine neu gebildete Array zurück, so dass Sie wie folgt tun:

this.model = a.map(i => { 
    var item = {} 
    item['id']= i.id, 
    item['meeting_date']= i.schedule, 
    item['meeting_call']= i.type, 
    item['event_type']= i.event_type, 
    item['venue']= i.venue, 
    item['with_client']= i.with_client 
    if(i.meeting && i.meeting.meeting_summaries) { 
    item['meeting_summaries']= i.meeting.meeting_summaries.map(ms =>({ 
      client_name: ms.client_name, 
      nature: ms.nature, 
      action: ms.action, 
      mention: ms.user_id, 
      feedback: ms.feedback 
     })) 
    }else { 
    item['meeting_summaries'] = [] 
    } 
return item 
} 
+0

ist es notwendig, ein variable Objekt zu erklären und dann Daten zuweisen ?, wie vor der Platzierung if-Anweisung meines Code, wie gewünscht ausgeführt wurde. –

+0

Sie müssen eine neue Variable deklarieren, da Sie einige Eigenschaften, aber nicht alle von Ergebnisobjekt auswählen, und Sie müssen es zurückgeben. –

+0

also definiere ich in der ersten Zeile selbst als 'this.model = a.map (i => Object.assign())' –

0

In Ihrem Fall können Sie nur tauschen zu ternary expression:

this.model = a.map(i => Object.assign({ 
    'id': i.id, 
    'meeting_date': i.schedule, 
    'meeting_call': i.type, 
    'event_type': i.event_type, 
    'venue': i.venue, 
    'with_client': i.with_client 
}, (i.meeting.meeting_summaries) ? { // if condition is met 
    'meeting_summaries': i.meeting_summaries.map(ms => ({ 
     client_name: ms.client_name, 
     nature: ms.nature, 
     action: ms.action, 
     mention: ms.user_id, 
     feedback: ms.feedback 
    })) 
} : {} // otherwise don't do anything 

die Idee ist folgende:

const a = [1, 2, 3, 4, 5]; 
 

 
const b = a.map(number => Object.assign({a: number}, 
 
    (number > 2) ? {b: ++number} : {}, // add 'b' for numbers > 2 
 
    (number % 2 === 0) ? {c: number + ' is even'} : {} // add 'c' for even numbers 
 
)) 
 
    
 
console.log(b)

+0

@Nitish Kumar Dies sollte Antwort angenommen werden. –

Verwandte Themen