2017-05-18 2 views
1

Ich möchte bestimmte UI bauen, es beinhaltet Manipulation von Array-Objekt, ich kenne den Pseudo-Code, aber ich weiß nicht, wie Sie die Ausgabe zu produzieren. Unten ist meine Fallaussage. Brauchen Sie Hilfe.manipulieren Array von Objekt innerhalb Array von Objektbasis auf Eigenschaft

wenn äußere Datum ist zwischen der DATE_FROM Daten und DATE_TO

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

Satz Typ mid

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

wenn äußere Datum gleich

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

Satz Typ DATE_FROM zu is_start_left

wenn äußere Datum DATE_TO gleich

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

Settyp is_end_right

Antwort

1

Sie könnten eine verschachtelte conditional (ternary) Operator ?: und überprüfen date_from verwenden oder date_to oder Rückkehr nur '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

oh ich sehe forEach innerhalb forEach. aber ich wusste nicht, ternary Operator kann mehrere andere tun. –

+0

@AlanJenshen, von diesem Ausschnitt kann ich kaum sagen, wo der Fehler ist. –

Verwandte Themen