• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyciąganie najbliższej liczby z tablicy

Object Storage Arubacloud
+1 głos
288 wizyt
pytanie zadane 20 września 2021 w JavaScript przez Maxxxii Obywatel (1,260 p.)
Tym razem mam może śmieszne pytanie, ale nie mogę wpaść na pomysł jak to zrobić. Mam tablice gdzie są zapisane różne liczby i mam zmienną w której jest jakaś liczba. i chciałbym aby skrypt wyciągał z tablicy liczbę najbliższą wartości w zmiennej. proszę o podpowiedź. Pozdrawiam

2 odpowiedzi

+1 głos
odpowiedź 20 września 2021 przez Milesq Nałogowiec (32,020 p.)
wybrane 21 września 2021 przez Maxxxii
 
Najlepsza

Można to zrobić prościej niż napisał mój przedmówca, i w dodatku nieco bardziej oszczędnie. Możesz wykorzystać .reduce.

function getClosestNumber(array, numberToMatch) {
    return array.reduce((acc, el) => {
        const currentDiff = Math.abs(numberToMatch - acc)
        const newDiff = Math.abs(numberToMatch - el)

        return newDiff < currentDiff ? el : acc
    })
}

 

komentarz 20 września 2021 przez Maxxxii Obywatel (1,260 p.)
function getClosestNumber(dirRwyTab, twoNumWindDirect) {
    return dirRwyTab.reduce((acc, el) => {
        const currentDiff = Math.abs(twoNumWindDirect - acc)
        const newDiff = Math.abs(dirRwyTab - el)
 
        return newDiff < currentDiff ? el : acc
    })
  }

zawartość funkcji

zawartość dirRwyTab:15,33,11,29

wartość twoNumWindDirect: 26

funkcja wybrała 15 jaką najbliższą a nie 29; być może źle uzupełniłem wartości w funkcji

komentarz 21 września 2021 przez Milesq Nałogowiec (32,020 p.)

Chyba źle, bo mi zwróciło 29

Druga sprawa, dlaczego zmieniłeś nazwy tych argumentów? Są okropne i nie czytelne

1
komentarz 21 września 2021 przez Maxxxii Obywatel (1,260 p.)
już naprawiłem :) dzięki za pomoc!
0 głosów
odpowiedź 20 września 2021 przez ScriptyChris Mędrzec (190,190 p.)

Możesz zmapować tablicę liczb na tablicę obiektów z propertisami diff i num, gdzie diff to będzie różnica między Twoją liczbą a liczbą z tablicy (przyda się wyciągnąć z tego wartość absolutną), a num to dana liczba z tablicy. Następnie posortuj rosnąco wynikową tablicę obiektów i pierwszy jej element, to będzie obiekt, którego property num będzie miało wartość najbliższą Twojej liczbie.

Przykład:

function getClosestNumberFromArray(array, numberToMatch) {
  const calculatedArray = array
    .map(num => ({diff: Math.abs(numberToMatch - num), num }))
    .sort((a,b) => a.diff - b.diff);
  const closestNum = calculatedArray[0].num;
 
  return closestNum
}

getClosestNumberFromArray([2,3,4,5,1,7,4,33,2], 9) // 7
getClosestNumberFromArray([2,3,4,5,1,7,4,33,2], 25) // 33
getClosestNumberFromArray([2,3,4,5,1,7,4,33,2], 19) // 7

 

Podobne pytania

0 głosów
1 odpowiedź 89 wizyt
pytanie zadane 18 lutego w JavaScript przez Piotrek2713 Mądrala (5,380 p.)
+1 głos
1 odpowiedź 760 wizyt
pytanie zadane 18 września 2021 w JavaScript przez Maxxxii Obywatel (1,260 p.)
0 głosów
2 odpowiedzi 515 wizyt
pytanie zadane 6 września 2021 w JavaScript przez Maxxxii Obywatel (1,260 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...