הדרך הקלה למצוא מספר בין לבין - js
-
שלום וברכה
יש לי מערך אם אובייקטים שבכל אובייקט יש איזה אחד הערכים שהוא מספר
למשל:const regular = [ { amount: 36000, innerPrograms:[ { ... }, { ... }, ] }, { amount: 100000, innerPrograms:[ { ... }, { ... }, ] }, { amount: 300000, innerPrograms:[ { ... }, { ... }, ] }, ];
כנגדו יש לי מספר שאני צריך לבדוק לאיזה מערך הוא שייך - שווה או יותר מהמספר (כמובן רק לאחד מהם, כלומר אם מדובר ב300000 הוא יהיה שייך רק לאחרון)
במחשבה ראשונה ביצעתי לולאה שעוברת על המערך ובודקת מול האיטרציה הנוכחית בהשוואה לאיטרציה הבאה, הבעיה בזה שאם סדר המערך הפוך או מבולגן זה לא יעבוד כמו שצריך.
השאלה אם הדרך הנכונה היא אכן כך אלא שיש ראשית לסדר את המערך שיהיה מהקטן לגדול או שיש דרך קלה יותר?
-
@ש-ב-ח כפי שאמרת, הדרך הקלה זה לעבוד עם אובייקט ממויין.
אז השאלה היא איך ממיינים מערך בJS:var sorted = regular.sort((a, b) => a.amount - b.amount);
אח"כ כפי שהצעת אז קל למצוא ככה:
function getNearestAmount(sortedRegular input) { //מחפש את אינדקס האיבר הראשון שגדול מהערך המבוקש var nextOfInput = sortedRegular.findIndex(x => x.amount > input); if(nextOfInput == -1) //אם הוא לא מצא - כולם קטנים, return sortedRegular[sortedRegular.length - 1]; if(nextOfInput == 0) return sortedRegular[0]; return sortedRegular[nextOfInput - 1]; }
אתה קורא לפונקציה עם המערך הממויין, ועם המספר אותו יש לחפש ומקבל את האיבר המתאים.