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

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

הפרק היומי

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


תהילים פרק יב

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

אתגר AI

חג מתן תורה • 1

לוח מודעות

למעלה