2017-05-18 141 views
1

我想构建某些用户界面,它涉及操纵数组对象,我知道伪代码,但我不知道如何生成输出。以下是我的案例陈述。需要指导。操纵对象数组中的对象基于属性

如果外日期是在数据的date_from之间和DATE_TO

[{ 
    date:'2017-05-11', 
    data:[{id: 2, name: 'abc', date_from:'2017-05-03', date_to:'2017-05-05'}] 
}] 

组类型mid

[{ 
    date:'2017-05-11', 
    data:[{id: 2, name: 'abc', date_from:'2017-05-03', date_to:'2017-05-05', type:'mid'}] 
}] 

如果外日期等于date_from

[{ 
    date:'2017-05-11', 
    data:[{id: 2, name: 'abc', date_from:'2017-05-11', date_to:'2017-05-15'}] 
}] 

集类型到is_start_left

如果外日期等于DATE_TO

[{ 
    date:'2017-05-11', 
    data:[{id: 2, name: 'abc', date_from:'2017-05-01', date_to:'2017-05-11'}] 
}] 

类型设置为is_end_right

回答

1

你可以使用一个嵌套conditional (ternary) Operator ?:和检查date_from,或date_to或只返回'mid'

function setType(array) { 
 
    array.forEach(a => a.data.forEach(o => o.type = a.date === o.date_from ? 
 
     'is_start_left' : 
 
     a.date === o.date_to ? 
 
      'is_end_right' : 
 
      'mid' 
 
    )); 
 
    return array; 
 
} 
 

 
console.log(setType([{ date: '2017-05-11', data: [{ id: 2, name: 'abc', date_from: '2017-05-03', date_to: '2017-05-05' }] }])); 
 
console.log(setType([{ date: '2017-05-11', data: [{ id: 2, name: 'abc', date_from: '2017-05-11', date_to: '2017-05-15' }] }])); 
 
console.log(setType([{ date: '2017-05-11', data: [{ id: 2, name: 'abc', date_from: '2017-05-01', date_to: '2017-05-11' }] }]));
.as-console-wrapper { max-height: 100% !important; top: 0; }

+1

哦,我看到内的forEach的forEach。但我不知道三元运算符可以做多个其他的。 –

+0

@AlanJenshen,从这段代码中,我几乎不知道错误在哪里。 –