שאלה - JS - איך לכתוב את זה בצורה פשוטה יותר?

(חיה)

משתמש סופר מקצוען
מנוי פרימיום
בוגר/תלמיד פרוג
הנדסת תוכנה
אני כותבת פונקצייה שתבדוק אם מספר מסוים נמצא במערךמסוים, ויחזיר את האינדקס שלו.
(ואם המספר לא במערך שיחזיר -1)
כתבתי כך:
קוד:
/* Returns either the index of the location in the array,
  or -1 if the array did not contain the targetValue */
var doSearch = function(array, targetValue) {
    var min = 0;
    var max = array.length - 1;
    var guess;
    while(max > min && array[guess] !== targetValue){
        guess = round(min + max)/2;
        if(array[guess] === targetValue){
            return(array[guess]);
        }
        else if (guess < targetValue){min = guess + 1;}
        else {max = guess - 1;}
       
    }
    return (-1);

};

var primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,
        41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97];

var result = doSearch(primes, 73);
println("Found prime at index " + result);
וכתבו לי:
לא צריך להשתמש ב-|| או אופרטורים && במצב של לולאת ה-while שלך. נסה להשתמש במצב פשוט יותר.
אותו דבר כותבים לי על break.
איך אני יכולה לכתוב את זה בלי && או break?
 
נערך לאחרונה ב:

מאסטר באקסל

משתמש מקצוען
טוב אז אני רואה ש @(חיה) כבר הצליחה, אבל סתם לכיף אני מעלה פה פתרון ברקורסיה, לדעתי יש בזה משהו יותר יפה אולי גם @(:1234 תסכים.

JavaScript:
function doSearch(array, targetValue, min, max) {
    min = undefined === min ? 0 : min;
    max = undefined === max ? array.length - 1 : max;
    if (max < min) return -1;
    const middle = Math.floor((max + min) / 2);
    const value = array[middle];
    if (targetValue === value) return middle;
    if (targetValue > value) return doSearch(array, targetValue, middle + 1, max);
    if (targetValue < value) return doSearch(array, targetValue, min, middle - 1);
};

const result = doSearch([2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97], 73);
console.log({ result });
 

אולי מעניין אותך גם...

הפרק היומי

הפרק היומי! כל ערב פרק תהילים חדש. הצטרפו אלינו לקריאת תהילים משותפת!


תהילים פרק קלז

א עַל נַהֲרוֹת בָּבֶל שָׁם יָשַׁבְנוּ גַּם בָּכִינוּ בְּזָכְרֵנוּ אֶת צִיּוֹן:ב עַל עֲרָבִים בְּתוֹכָהּ תָּלִינוּ כִּנֹּרוֹתֵינוּ:ג כִּי שָׁם שְׁאֵלוּנוּ שׁוֹבֵינוּ דִּבְרֵי שִׁיר וְתוֹלָלֵינוּ שִׂמְחָה שִׁירוּ לָנוּ מִשִּׁיר צִיּוֹן:ד אֵיךְ נָשִׁיר אֶת שִׁיר יְהוָה עַל אַדְמַת נֵכָר:ה אִם אֶשְׁכָּחֵךְ יְרוּשָׁלִָם תִּשְׁכַּח יְמִינִי:ו תִּדְבַּק לְשׁוֹנִי לְחִכִּי אִם לֹא אֶזְכְּרֵכִי אִם לֹא אַעֲלֶה אֶת יְרוּשָׁלִַם עַל רֹאשׁ שִׂמְחָתִי:ז זְכֹר יְהוָה לִבְנֵי אֱדוֹם אֵת יוֹם יְרוּשָׁלִָם הָאֹמְרִים עָרוּ עָרוּ עַד הַיְסוֹד בָּהּ:ח בַּת בָּבֶל הַשְּׁדוּדָה אַשְׁרֵי שֶׁיְשַׁלֶּם לָךְ אֶת גְּמוּלֵךְ שֶׁגָּמַלְתְּ לָנוּ:ט אַשְׁרֵי שֶׁיֹּאחֵז וְנִפֵּץ אֶת עֹלָלַיִךְ אֶל הַסָּלַע:
נקרא  17  פעמים

לוח מודעות

למעלה