שאלה - 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 });
 

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

הפרק היומי

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


תהילים פרק קמו

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

ספירת העומר

לוח מודעות

למעלה