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

[JS] Konwersja stringa na tablice / brakujące litery

VPS Starter Arubacloud
0 głosów
1,949 wizyt
pytanie zadane 10 września 2019 w JavaScript przez 42savage Bywalec (2,630 p.)
edycja 10 września 2019 przez 42savage

 

Ok, a więc mam zadanie, żeby posortować alfabetycznie i usunąć zduplikowane literki, a następnie porównać długości obu stringów i zwrócić, ten o większej długości.

Robie to w taki sposób, że najpierw zamieniam stringa na tablice a potem sortuje i koniec końców z powrotem zamieniam na stringa.

Problem jest taki, że 

    [...new Set(arr2)]

ucina mi za dużo literek, nawet jeżeli nie są zduplikowane

var s1= "loopingisfunbutdangerous"
var s2 = "essdangerousthancoding"

function longest(s1, s2) {
    var arr1 = s1.split('').sort();
    var arr2 = s2.split('').sort();
    let result1 = [...new Set(arr1)].join('');
    let result2 = [...new Set(arr2)].join('');
    if(result1.length > result2.length){
        console.log(result1)
        return result1;
    }
    else{
        console.log(result2)
        return result2;
    }
}

longest(s1, s2)

przykładowe s1 i s2

aretheyhere, yestheyarehere = powinny być: aehrsty, zjadło "s"

1
komentarz 10 września 2019 przez Tomek Sochacki Ekspert (227,510 p.)
jeśli już chcesz robić takie operacje to kompletnie bez sensu jest sortowanie na wstępie obu stringów - na starcie interesuje Cię tylko jakie mają unikalne znaki i który jest dłuższy i dopiero ten jeden posortuj, inaczej bez sensu poświęcisz czas na zbędne sortowanie. Na kom. nie lubię pisac kodu więc najwyżej jak nikt nie pomoże to jak będę przy kompie zerknę na kod.
komentarz 11 września 2019 przez 42savage Bywalec (2,630 p.)

Mistrzu,  zajrzysz? laugh
A co do operacji rzeczywiście nie przemyślałem tego do końca.

1 odpowiedź

0 głosów
odpowiedź 11 września 2019 przez niezalogowany
let s1= "loopingisfunbutdangerous"
let s2 = "essdangerousthancoding"
let arr1 = s1.split('');
let arr2 = s2.split('');
let result1 = Array.from(new Set(arr1));
let result2 = Array.from(new Set(arr2));
if(result1.length > result2.length){
console.log(result1.sort());
} else {
console.log(result2.sort());
}      

 

komentarz 11 września 2019 przez danielb Bywalec (2,520 p.)
Samego mnie zainteresowało, to zagadnienie, podoba mi się, ten twój sposób podejścia do tematu, krótko i zwięzłe :-)
komentarz 11 września 2019 przez 42savage Bywalec (2,630 p.)

Czy ja wiem czy to krótko i zwięźle coś dało. Dalej zjada literki, w dodatku nie zwraca stringa, tylko loguje w konsoli tablice.

komentarz 11 września 2019 przez niezalogowany
Zwracanie możesz sobie dorobić sam, ja nie będę za Ciebie pisał gotowca.

Jakie literki Ci zjada bo mi żadnych nie zjadło.
komentarz 11 września 2019 przez 42savage Bywalec (2,630 p.)
edycja 11 września 2019 przez 42savage

Expected: 'abcdefghilnoprstu', instead got: 'abdefgilnoprstu'

Expected: 'acefghilmnoprstuy', instead got: 'acefhinoprstu'

 

Array.from(new Set(arr1)); to to samo co moje [...new Set(arr1)];


Nie wiem co to za zmiana

komentarz 11 września 2019 przez niezalogowany
Kod działa prawidłowo, sprawdź czy testy dobrze napisałeś, w dwóch expected masz literkę 'c' a tylko w jednym stringu występuje.

A co do uwagi dotyczącej zmiany to przemilczę.

Podobne pytania

0 głosów
1 odpowiedź 211 wizyt
pytanie zadane 15 lutego 2021 w C i C++ przez Rainbow99 Początkujący (430 p.)
0 głosów
2 odpowiedzi 356 wizyt
0 głosów
0 odpowiedzi 249 wizyt

92,455 zapytań

141,263 odpowiedzi

319,100 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...