محمد لارافيل نشر 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; } كيف يمكنني إيقاف تغيير قيم المصفوفة؟ اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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 كما كان يحدث في الكود الأصلي. اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
محمد لارافيل
أحاول العثور على أيام الأسبوع بين التاريخ الأول والتاريخ الثاني. في المصفوفة التي تحتوي على تواريخ أيام الأسبوع ، تحصل القيم على زيادة بعد تنفيذ السطر 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
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.