• 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

0 głosów
116 wizyt
pytanie zadane 10 września w JavaScript, jQuery, AJAX przez 42savage Obywatel (1,870 p.)
edycja 10 września 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 przez Tomek Sochacki Mędrzec (188,800 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 przez 42savage Obywatel (1,870 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 przez korsarz Mądrala (5,300 p.)
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 przez danielb Obywatel (1,380 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 przez 42savage Obywatel (1,870 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 przez korsarz Mądrala (5,300 p.)
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 przez 42savage Obywatel (1,870 p.)
edycja 11 września 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 przez korsarz Mądrala (5,300 p.)
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
2 odpowiedzi 121 wizyt
0 głosów
0 odpowiedzi 69 wizyt
0 głosów
1 odpowiedź 134 wizyt
pytanie zadane 30 sierpnia 2018 w C i C++ przez maciek061 Gaduła (4,500 p.)
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

66,495 zapytań

113,266 odpowiedzi

239,870 komentarzy

46,633 pasjonatów

Przeglądających: 251
Pasjonatów: 4 Gości: 247

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...