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

Jak znaleźć identyczną wartość w dwóch tablicach i przypisać ją do nowej zmiennej ? Javascript

Object Storage Arubacloud
+1 głos
1,270 wizyt
pytanie zadane 4 listopada 2018 w JavaScript przez Kamil Szpecht Początkujący (280 p.)
Witam,

Jestem bardzo początkujący, potrzebuję rozwiązać następujący problem:

Mam dwie tablice z wartościami typu number o rożnej długości. Potrzebuję je porównać w taki sposób, żeby znaleźć wartość identyczną w obu i przypisać tą wartość do nowej zmiennej.

pozdrawiam.

4 odpowiedzi

+1 głos
odpowiedź 4 listopada 2018 przez Tomek Sochacki Ekspert (227,510 p.)

Tak na szybko to może być coś na wzór:

const numbers1 = [1,2,3,4,5];
const numbers2 = [0,0,3,4,5,6,7,8];
let n; // szukana liczba wspólna dla obu tablic

for (const val of numbers1) {
  if (numbers2.includes(val)) {
    n = val;
    break;
  }
}

n; // 3

Z Twojego opisu wynika, że interesuje nas wyłącznie pierwsza wspólna liczba. Można by algorytm nieco rozbudować np. jako funkcję, przyjmującą dwie tablice i zwracającą tę pierwszą, wspólną wartość. Wtedy warto by na wstępie ustalić która z tablic jest mniejsza i tylko po niej iterować ale to już takie zabawy w zależności co dokładnie chcemy osiągnąć.

Moje rozwiązanie to takie chyba jedno z najprostszych z użyciem po prostu zwykłej pętli for-of w JS i instrukcji warunkowej.

1
komentarz 4 listopada 2018 przez Kamil Szpecht Początkujący (280 p.)
Dziękuję wam ! Problem rozwiązany.
+1 głos
odpowiedź 4 listopada 2018 przez X3h Dyskutant (9,540 p.)
edycja 4 listopada 2018 przez X3h
const findFirst = (a,b) => a.find(x => b.some(y => x == y));
findFirst([1,2,3,4,5], [0,0,3,4,5,6,7,8]); // 3

Moje rozwiązanie jest najszybsze. http://jsben.ch/WX4T1

komentarz 4 listopada 2018 przez pablop76 VIP (123,120 p.)
Nie zauważyłeś drobnej różnicy.

Mój skrypt jako jedyny z wymienionych  zwraca wszystkie znalezione elementy.
komentarz 4 listopada 2018 przez X3h Dyskutant (9,540 p.)
W takim razie sam sobie zrobiłeś zadanie i przyniosłeś rozwiązanie nie tu gdzie trzeba.
0 głosów
odpowiedź 4 listopada 2018 przez niezalogowany
for(i = 0; i < tab1.length; i++)
   for(j = 0; j < tab2.length; j++)
       if(tab1[i] == tab2[j])
          zmienna = tab1[i];

 

0 głosów
odpowiedź 4 listopada 2018 przez pablop76 VIP (123,120 p.)
edycja 4 listopada 2018 przez pablop76

Można użyć metody filter(), żeby porównać tablice.

const one = [1, 2, 3, 4, 5, 6];
const two = [12, 2, 31, 4, 54, 6];

const comparison = (oneTab,twoTab)=>{
    const score = [];
  
    for(let i = 0; i<=oneTab.length; i ++ ){
      const identical = twoTab.filter((el)=> {
      return el === oneTab[i];
    });
      if(identical[0])
        score.push(identical[0])
  }
  return score;
}
console.log(comparison(one,two));

Uniwersalne rozwiązanie, bez względu na to jakie tablice porównujesz

komentarz 4 listopada 2018 przez pablop76 VIP (123,120 p.)
Prosze o skomentowanie minusa przez autora. Dziękuję.
komentarz 4 listopada 2018 przez X3h Dyskutant (9,540 p.)
Twoje rozwiązanie nie zwraca co najwyżej jednego elementu co było jasno określone w pytaniu.
komentarz 4 listopada 2018 przez pablop76 VIP (123,120 p.)
A gdzie jest napisane, że ma zwrócić pierwszą pasującą parę? A poza tym wystarczy zwrócić score[0] i masz jeden element. Uważam, że minus jest mocno przesdzony.

Podobne pytania

0 głosów
1 odpowiedź 468 wizyt
pytanie zadane 23 grudnia 2016 w JavaScript przez Kuba Makowski Początkujący (310 p.)
+1 głos
2 odpowiedzi 902 wizyt
pytanie zadane 6 listopada 2015 w Java przez b00ny Mądrala (6,050 p.)
0 głosów
1 odpowiedź 89 wizyt
pytanie zadane 13 marca 2020 w C i C++ przez MiKasProgramista Początkujący (350 p.)

92,555 zapytań

141,402 odpowiedzi

319,543 komentarzy

61,939 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!

...