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

question-closed Dlaczego wartość prymitywna wewnątrz obiektu jest samoczynnie zamieniana na fałsz?

Cloud VPS
+1 głos
302 wizyt
pytanie zadane 14 stycznia 2021 w JavaScript przez Artek Stary wyjadacz (11,800 p.)
zamknięte 15 stycznia 2021 przez ScriptyChris

Mamy taki kod :

getOptionsWithObjectProperties(options:Array<any>): Array<object>{
        let optionsWithKeys: Array<object> = [];

        options.forEach(option => {
            optionsWithKeys.push({value : option, 
            identifier : this.parseOptionValueToObjectProperty(option)});
        })
        console.log(optionsWithKeys);
        return optionsWithKeys;
    }

Funkcja parseOptionValueToObjectProperty zwraca stringa, wartość prymitywną, funkcja działa poprawnie i zwraca to czego potrzebuję. Wewnątrz foreach wartości są takie jakie oczekuję. Jednak po wyjściu z z forEach okazuje się, że w zwracanej tablicy mamy takie oto obiekty : 

{
idendifier : false,
value : "Jakiś tekst zgodny z tym co potrzebuję"
}

We wszystkich obiektach w tablicy właściwość identifier z jakiegoś powodu zostaje zamieniona na false, dlaczego?

komentarz zamknięcia: Problem rozwiązany - nieprawidłowe połączenie elementów w Vue
1
komentarz 14 stycznia 2021 przez Tomek Sochacki Ekspert (227,490 p.)
Pokaz implementację tej metody jeszcze.
komentarz 14 stycznia 2021 przez Artek Stary wyjadacz (11,800 p.)
parseOptionValueToObjectProperty(value):string{
        const str = value.toString();
        return `_${str.replace(' ','_').replaceAll('-','_')}`;
    }

 

komentarz 14 stycznia 2021 przez Tomek Sochacki Ekspert (227,490 p.)
Sprawdzałem sobie ten Twój kod w konsoli i jest ok np. dla wywołania "getOptionsWithObjectProperties(['abc', '123'])". Pokaż może nieco więcej kodu, te booleany to gdzie dostajesz, już w tym console.log wewnątrz getOptionsWithObjectProperties ? Jeśli tak to pokaż jeszcze jakie dajesz parametry wejściowe (options).
komentarz 14 stycznia 2021 przez Artek Stary wyjadacz (11,800 p.)

Dobra dodam więcej informacji.

Po pierwsze korzystam z vue.js to jest kod umieszczony w komponencie bazowanym na klasie.

Options jest tablicą zawierającą stringi - imiona i nazwiska.

Teraz zauważyłem, że gdy wyświetlam w konsoli wewnątrz forEach to wygląda dość standardowo - zgodnie z zapotrzebowaniem.

{value : "imie i nazwisko", identifier : '_imie_i_nazwisko'}

Ale po wyjściu z forEach w konsoli wyświetla się w taki sposób : 

{  identifier : (....),  value : (....)}

Kliknięcie w (....) to wywołanie gettera (po najechaniu kursorem wyświetla się informacja - invoke property getter). Po wywołaniu gettera dla właściwości identifier zawsze wyskakuje false, właściwość value jest w porządku.Czyli w forEach jest zwyczajnie, ale po wyjściu z forEach aby odczytać właściwość obiektu nagle trzeba uruchomić getter. Dlaczego?

1
komentarz 14 stycznia 2021 przez Tomek Sochacki Ekspert (227,490 p.)
a to options z jakim wywołujesz metodę to zwykła standardowa tablica stringów? dziwna sytuacja trochę... z vue nie pracowałem, ale nie podejrzewam aby framework w jakiś sposób robił coś z tablicami...
1
komentarz 14 stycznia 2021 przez Artek Stary wyjadacz (11,800 p.)
Dziękuję Ci za pomoc, problem rozwiązany - okazało się, że błąd nie leży w rozumieniu js'a tylko źle połączyłem pewne elementy w vue.
1
komentarz 14 stycznia 2021 przez Tomek Sochacki Ekspert (227,490 p.)
grunt że udało się naprawić problem :)

Podobne pytania

+1 głos
1 odpowiedź 622 wizyt
0 głosów
2 odpowiedzi 1,555 wizyt
pytanie zadane 15 lipca 2019 w JavaScript przez wsnofi Bywalec (2,680 p.)
0 głosów
1 odpowiedź 218 wizyt
pytanie zadane 27 maja 2020 w JavaScript przez boneoflive Użytkownik (930 p.)

93,487 zapytań

142,423 odpowiedzi

322,773 komentarzy

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

Kursy INF.02 i INF.03
...