2017-06-05 85 views
0

我建设Vuejs一个小应用程序在那里我得到响应数据,我将其映射到一个变量,我有几个要素具有空数组,所以在映射时我想检查条件并相应映射。这里是我的代码:如何if语句中的地图在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 
     })) 
    } 

}, 

回答

1

map纯粹是功能性的,它不修改的元素,而不是返回一个新成立的数组,所以你可以这样做:

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

是有必要声明变量对象,然后分配数据+,作为放置if语句所期望我的代码在运行前。 –

+0

您需要声明一个新变量,因为您正在从结果对象中选取一些属性但不是全部,并且必须将其返回。 –

+0

所以在第一线限定林本身作为'this.model = a.map(I => Object.assign())' –

0

在你的情况,你可以仅仅交换到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 

的想法是这样的:

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库马尔这应该被接受的答案。 –