• 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
321 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ź 123 wizyt
pytanie zadane 18 lutego w JavaScript przez Piotrek2713 Mądrala (5,500 p.)
+1 głos
1 odpowiedź 861 wizyt
pytanie zadane 18 września 2021 w JavaScript przez Maxxxii Obywatel (1,260 p.)
0 głosów
2 odpowiedzi 549 wizyt
pytanie zadane 6 września 2021 w JavaScript przez Maxxxii Obywatel (1,260 p.)

92,674 zapytań

141,576 odpowiedzi

320,045 komentarzy

62,038 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

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!

...