Powiedzmy, że mam następującą mapę:
let myMap = new Map().set('a', 1).set('b', 2);
I chcę uzyskać ['a', 'b'] w oparciu o powyższe. Moje obecne rozwiązanie wydaje się tak długie i okropne.
let myMap = new Map().set('a', 1).set('b', 2);
let keys = [];
for (let key of myMap)
keys.push(key);
console.log(keys);
Musi być lepszy sposób, nie?
javascript
dictionary
ecmascript-6
Lilleman
źródło
źródło
Array.from(Map.keys())
.Map
.Array.from(Map.values())
- jeśli tak, potrzebujesz wartości zamiast kluczy.Odpowiedzi:
Map.keys()
zwracaMapIterator
przedmiot, który może być przekształconyArray
za pomocąArray.from
:EDYCJA: można także przekonwertować obiekt iterowalny na tablicę przy użyciu składni rozproszonej
źródło
this.map.values().slice is not a function
. Może powinienem zaktualizować.slice()
wywołanie jest wykonywane przed operatorem rozkładania. Spróbuj[ ... Array.from(map.values()).slice(0) ]
const fooMap = new Map<number, string>(); const fooArray = [...fooMap.keys()];
celu: TS2461: Typ „IterableIterator <numer>” nie jest typem tablicy. Dlatego nie jest to dozwolone w TypeScript. Array.from działa zgodnie z oczekiwaniami...."abc"
aby dostać się["a","b","c"]
do ES6, co nie jest możliwe w TS...."abc"
ani...("abc")
nie działają w konsoli Chrome, która obsługuje ES6?Za pomocą operatora rozkładania można przekonwertować iterator Map.keys () na macierz.
źródło
Array.from(myMap.keys())
nie działa w skryptach aplikacji Google.Próba użycia powoduje błąd
TypeError: Cannot find function from in object function Array() { [native code for Array.Array, arity=1] }
.Aby uzyskać listę kluczy w GAS, wykonaj następujące czynności:
źródło
map.keys()
pojawia się błąd informujący, że zwracana wartość nie jest iterowalna.Potrzebuję czegoś podobnego do kątowej formy reaktywnej:
źródło
Nie do końca najlepsza odpowiedź na pytanie, ale ta sztuczka
new Array(...someMap)
uratowała mnie kilka razy, gdy potrzebuję zarówno klucza, jak i wartości, aby wygenerować potrzebną tablicę. Na przykład, gdy trzeba utworzyć komponenty reagujące z obiektu mapy na podstawie wartości klucza i wartości.źródło
OK, przejdźmy trochę bardziej kompleksowo i zacznijmy od tego, co jest Mapą dla tych, którzy nie znają tej funkcji w JavaScript ... MDN mówi:
Jak wspomniałeś, możesz łatwo utworzyć instancję mapy, używając nowego słowa kluczowego ... W twoim przypadku:
Zobaczmy więc ...
Wspomniany sposób jest w porządku, ale tak, są bardziej zwięzłe sposoby na zrobienie tego ...
Mapa ma wiele metod, których można użyć, takich jak
set()
te, które zostały już użyte do przypisania kluczowych wartości ...Jednym z nich jest
keys()
zwrócenie wszystkich kluczy ...W twoim przypadku zwróci:
i łatwo przekształcasz je w macierz przy użyciu metod ES6 , takich jak operator spread ...
źródło