محمد لارافيل نشر 7 فبراير 2023 أرسل تقرير نشر 7 فبراير 2023 أحاول العثور على أيام الأسبوع بين التاريخ الأول والتاريخ الثاني. في المصفوفة التي تحتوي على تواريخ أيام الأسبوع ، تحصل القيم على زيادة بعد تنفيذ السطر 1 في الكود التالي private getListOfWeekDaysBetweenTwoDates( startDate: Date, endDate: Date ): Date[] { const weekdaysList = []; let tempDate = this.addDaystoGivenDate(startDate, 1); while (tempDate < endDate) { if (this.isWeekDay(tempDate)) { weekdaysList.push(tempDate); } //السطر 1 tempDate = this.addDaystoGivenDate(tempDate, 1); } return weekdaysList; } private addDaystoGivenDate(date: Date, numberOfDays: number): Date { return new Date(date.setUTCDate(date.getUTCDate() + numberOfDays)); } private isWeekDay(day: Date): boolean { if (day.getUTCDay() >= 1 && day.getUTCDay() <= 5) { return true; } return false; } كيف يمكنني إيقاف تغيير قيم المصفوفة؟ اقتباس
0 Mustafa Suleiman نشر 19 فبراير 2023 أرسل تقرير نشر 19 فبراير 2023 يتم تغيير قيم المصفوفة weekdaysList في هذا الكود بسبب دالة this.addDaystoGivenDate() التي تعيد نفس الكائن Date الذي تم إرساله كمعامل لها، وتقوم بتحديث قيمتها في المكان نفسه. لحل هذه المشكلة ومنع تغيير قيم الصفيف، يجب إنشاء كائن Date جديد بنفس القيمة كلما تم استخدام دالة this.addDaystoGivenDate(). لذلك، يمكن تعديل الكود كما يلي: private getListOfWeekDaysBetweenTwoDates( startDate: Date, endDate: Date ): Date[] { const weekdaysList = []; let tempDate = new Date(startDate.getTime()); tempDate.setDate(tempDate.getDate() + 1); while (tempDate < endDate) { if (this.isWeekDay(tempDate)) { weekdaysList.push(new Date(tempDate.getTime())); } tempDate.setDate(tempDate.getDate() + 1); } return weekdaysList; } وبذلك يتم إنشاء كائن Date جديد في كل مرة يتم استخدام فيها this.addDaystoGivenDate() أو إضافة يوم واحد عبر tempDate.setDate(tempDate.getDate() + 1)، بدلاً من تحديث نفس الكائن Date كما كان يحدث في الكود الأصلي. اقتباس
السؤال
محمد لارافيل
أحاول العثور على أيام الأسبوع بين التاريخ الأول والتاريخ الثاني. في المصفوفة التي تحتوي على تواريخ أيام الأسبوع ، تحصل القيم على زيادة بعد تنفيذ السطر 1 في الكود التالي
private getListOfWeekDaysBetweenTwoDates( startDate: Date, endDate: Date ): Date[] { const weekdaysList = []; let tempDate = this.addDaystoGivenDate(startDate, 1); while (tempDate < endDate) { if (this.isWeekDay(tempDate)) { weekdaysList.push(tempDate); } //السطر 1 tempDate = this.addDaystoGivenDate(tempDate, 1); } return weekdaysList; } private addDaystoGivenDate(date: Date, numberOfDays: number): Date { return new Date(date.setUTCDate(date.getUTCDate() + numberOfDays)); } private isWeekDay(day: Date): boolean { if (day.getUTCDay() >= 1 && day.getUTCDay() <= 5) { return true; } return false; }
كيف يمكنني إيقاف تغيير قيم المصفوفة؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.