2017-05-24 3 views
1

Ich möchte einen neuen Proeprrty Call hinzufügen total_days berechnen mit Datum_von und Datum_to, aber meine forEach hat einen erwarteten Token-Fehler.forJedes unerwartete Token hinzufügen neue Eigenschaft zu bestehenden Array

let applicants = [{ 
    date_from: '2017-05-05', 
    date_to: '2017-05-10' 
},{ 
    date_from: '2017-05-08', 
    date_to: '2017-05-12' 
}] 

calculateDays = applicants.forEach(obj => 
    applicants['total_days'] = (obj.date_from).diff(obj.date_to, 'days')+1; 
) 

Keine Ahnung, was hier falsch ist.

+0

'calculateDays' ohnehin nicht definiert werden, denn das ist, was forEach zurückgibt - nur –

+0

nicht nur das, Sie haben ein Semikolon zu viel und' Antragsteller [ ‚total_days‘] 'wird das Ergebnis der letzten Schleife') +1; '<--- –

+0

Das unerwartete Token ist das' '' '- das einzige Semikolon, das du benutzt hast, ist das einzige, das es nicht sein kann - und zwei Stellen, die es sein sollte, du hast noch keins benutzt !!! WTF –

Antwort

0

Angenommen, Sie eine neue Eigenschaft für alle Objekte hinzufügen möchten, können Sie obj als Variable mit einer neuen Eigenschaft verwenden.

applicants.forEach(obj => obj.total_days = obj.date_from.diff(obj.date_to, 'days') + 1); 
//      ^^^ 
+0

sortiere das aus, aber mein Tag anders funktioniert nicht. https://jsfiddle.net/szfzysm2/ –

+0

welche antwort erwarten sie? –

+0

ah mein Fehler das falsche obj, jetzt aussortiert. Vielen Dank! –

1

Sie haben nicht genau geklärt, was Sie wollten, aber ich habe versucht, Ihren Code zu erraten.

Meine Vermutung ist, dass Sie ein neues Array von Bewerbern aus dem alten Array von Bewerbern erstellen wollten, aber in dem neuen Array wollten Sie jedem Objekt in diesem Array eine Eigenschaft hinzufügen, die den Unterschied in den Tagen der beiden darstellt Termine.

Um dies zu tun, können Sie Array.prototype.map verwenden, um jedes Element von Ihrem Array zu einem neuen Array zuzuordnen.

Ich verwende auch Object.assign to clone each object, so dass das ursprüngliche Array nicht geändert wird.

Ich analysiere auch die Datumsstrings in Zahl. Die geparste Nummer ist die Anzahl der seit dem 1. Januar 1970 00:00:00 UTC verstrichenen Millisekunden. Wenn ich den Unterschied der zwei Zahlen nehme und teile, dass die millisecondsInADay sein werden, dann werde ich erfahren, wie viele Tage dazwischen verstrichen sind. Das Ergebnis wird dann in einem neuen Array calculateDays gespeichert.

Lassen Sie mich wissen, wenn Sie weitere Erläuterungen benötigen.

let applicants = [{ 
 
    date_from: '2017-05-05', 
 
    date_to: '2017-05-10' 
 
}, { 
 
    date_from: '2017-05-08', 
 
    date_to: '2017-05-12' 
 
}] 
 

 
const millisecondsInADay = 1000 * 60 * 60 * 24; 
 

 
const calculateDays = applicants.map(obj => Object.assign({}, obj, { 
 
    total_days: ((
 
    Date.parse(obj.date_to) - Date.parse(obj.date_from) 
 
    )/millisecondsInADay) + ' days' 
 
})); 
 

 
console.log(calculateDays);

Verwandte Themen