Допустим, у меня есть следующая карта:
let myMap = new Map().set('a', 1).set('b', 2);
И я хочу получить ['a', 'b'] на основании вышеизложенного. Мое текущее решение кажется таким длинным и ужасным.
let myMap = new Map().set('a', 1).set('b', 2);
let keys = [];
for (let key of myMap)
keys.push(key);
console.log(keys);
Должен быть лучший способ, нет?
javascript
dictionary
ecmascript-6
Лиллеман
источник
источник
Array.from(Map.keys())
.Map
.Array.from(Map.values())
- если в этом случае вам нужны значения, а не ключи.Ответы:
Map.keys()
возвращаетMapIterator
объект, который может быть преобразован вArray
использованиеArray.from
:РЕДАКТИРОВАТЬ: вы также можете конвертировать повторяемый объект в массив, используя синтаксис распространения
источник
this.map.values().slice is not a function
. Может быть, я должен обновить.slice()
вызов выполняется перед оператором распространения. Попробуйте[ ... Array.from(map.values()).slice(0) ]
const fooMap = new Map<number, string>(); const fooArray = [...fooMap.keys()];
следующее: TS2461: Тип «IterableIterator <число>» не является типом массива. Так что это не разрешено в TypeScript. Array.from работает как положено...."abc"
чтобы получить["a","b","c"]
в ES6, что невозможно в TS...."abc"
и...("abc")
не работают в консоли Chrome, которая поддерживает ES6?Вы можете использовать оператор распространения для преобразования итератора Map.keys () в массив.
источник
Array.from(myMap.keys())
не работает в скриптах приложения Google.Попытка использовать это приводит к ошибке
TypeError: Cannot find function from in object function Array() { [native code for Array.Array, arity=1] }
.Чтобы получить список ключей в GAS, сделайте это:
источник
map.keys()
возвращаемое значение не повторяется.Мне нужно что-то похожее на угловатую реактивную форму:
источник
Не совсем лучший ответ на вопрос, но этот трюк
new Array(...someMap)
спас меня пару раз, когда мне нужны и ключ, и значение для генерации необходимого массива. Например, когда необходимо создать реагирующие компоненты из объекта Map на основе значений ключа и значения.источник
Хорошо, давайте немного подробнее и начнем с того, что такое Map для тех, кто не знает эту функцию в JavaScript ... MDN говорит:
Как вы упомянули, вы можете легко создать экземпляр Map, используя новое ключевое слово ... В вашем случае:
Итак, посмотрим ...
То, как вы упомянули, - это хороший способ сделать это, но да, есть более краткие способы сделать это ...
В Map есть много методов, которые вы можете использовать, например,
set()
которые вы уже использовали для назначения значений ключей ...Одним из них является то,
keys()
что возвращает все ключи ...В вашем случае он вернет:
и вы легко конвертируете их в массив, используя способы ES6 , такие как оператор распространения ...
источник