2017-04-25 1 views
1

https://jsfiddle.net/x991kcus/in einer Schleife mit Array-Eigenschaft des Objekts generiert

Ich bin in der Lage Termine Array ein Startdatum und Enddatum als params zu erzeugen, aber was ich will ist eigentlich Array von Objekt wie diese

[{date:"2017-4-01"},{{date:"2017-4-02"}}] 

Unter dem Code gab mir Array.

function generateDates(startDate, stopDate) { 
    var dateArray = []; 
    var currentDate = moment(startDate); 
    var stopDate = moment(stopDate); 
    while (currentDate <= stopDate) { 
    dateArray.push(moment(currentDate).format('YYYY-MM-DD')) 
    currentDate = moment(currentDate).add(1, 'days'); 
    } 

    return dateArray; 
} 
+0

Bevor 'push'ing auf das Array zu erstellen, ein Objekt erstellen' o' und das Datum 'o zuweisen. Datum ". Dann drücke das "o" auf das Array. – Abhitalks

+0

change dateArray.push ({Datum: Moment (currentDate) .format ('JJJJ-MM-TT')}) wie folgt https://jsfiddle.net/x991kcus/2/ –

+0

Sie sollten 'date.isAfter (date2) 'anstelle von' <= ' – Rajesh

Antwort

2

Sie könnten ein Objekt mit dem erzeugten Datum schieben.

dateArray.push({ date: moment(currentDate).format('YYYY-MM-DD') }); 
//    ^^^^^^^          ^wrap in object 

const start_date_of_month = moment().format("YYYY-MM-01"), 
 
     end_date_of_month = moment().format("YYYY-MM-") + moment().daysInMonth(); 
 

 
function generateDates(startDate, stopDate) { 
 
    var dateArray = [], 
 
     currentDate = moment(startDate), 
 
     stopDate = moment(stopDate); 
 

 
    while (currentDate <= stopDate) { 
 
     dateArray.push({ date: moment(currentDate).format('YYYY-MM-DD') }); 
 
     currentDate = moment(currentDate).add(1, 'days'); 
 
    } 
 
    return dateArray; 
 
} 
 

 
console.log(generateDates(start_date_of_month, end_date_of_month));
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

+0

omg ist es so einfach ?! –

1

Sie können ein Objekt in den dateArray schieben

function generateDates(startDate, stopDate) { 
    var dateArray = []; 
    var currentDate = moment(startDate); 
    var stopDate = moment(stopDate); 
    while (currentDate <= stopDate) { 
    obj = {}; 
    obj.date = moment(currentDate).format('YYYY-MM-DD')}; 
    dateArray.push(obj) 
    currentDate = moment(currentDate).add(1, 'days'); 
    } 
    return dateArray; 
} 
0

https://jsfiddle.net/x991kcus/4/

while (currentDate <= stopDate) { 
    var dateObject = {}; 
    dateObject.date = moment(currentDate).format('YYYY-MM-DD'); 
    dateArray.push(dateObject); 
    currentDate = moment(currentDate).add(1, 'days'); 
} 
0

Lösung mit ein Objekt Constructor in JavaScript ist eine Standardmethode eines "Objekttyp"

function dateObject(date) { 
    this.date= date; 
} 

function generateDates(startDate, stopDate) { 
    var dateArray = []; 
    var currentDate = moment(startDate); 
    var stopDate = moment(stopDate); 
    while (currentDate <= stopDate) { 
    dateArray.push(new dateObject(moment(currentDate).format('YYYY-MM-DD'))) 
    currentDate = moment(currentDate).add(1, 'days'); 
    } 

    return dateArray; 
} 

Working Fiddle Here

Verwandte Themen