• 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

Aruba Cloud - Virtual Private Server VPS
+1 głos
450 wizyt
pytanie zadane 20 września 2021 w JavaScript przez Maxxxii Obywatel (1,310 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,310 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,310 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ź 243 wizyt
pytanie zadane 18 lutego 2024 w JavaScript przez Piotrek2713 Mądrala (5,520 p.)
+1 głos
1 odpowiedź 1,186 wizyt
pytanie zadane 18 września 2021 w JavaScript przez Maxxxii Obywatel (1,310 p.)
0 głosów
2 odpowiedzi 676 wizyt
pytanie zadane 6 września 2021 w JavaScript przez Maxxxii Obywatel (1,310 p.)

93,277 zapytań

142,276 odpowiedzi

322,282 komentarzy

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...