First item from a Map on JavaScript ES2015
I have a Map
like this:
const m = new Map();
m.set('key1', {})
.
m.set('keyN' {})
the Map
can have 1 or many items. Can I get the first item by index, without m.get('key1')
and without a iterator loop?
like: m.get()[0]
Use the Map.prototype.entries
function, like this
const m = new Map();
m.set('key1', {})
m.set('keyN', {})
console.log(m.entries().next().value); // [ 'key1', {} ]
If you want to get the first key, then use Map.prototype.keys
, like this
console.log(m.keys().next().value); // key1
Similarly if you want to get the first value, then you can use Map.prototype.values
, like this
console.log(m.values().next().value); // {}
The reason why we have to call next()
on the returned values is that, all those functions return iterators. Read more about the iteration protocol here.
For the specific example you are wondering about, destructuring would be perfect.
let m = new Map();
m.set('key1', {});
m.set('key2', {});
let [[, obj]] = m;
e.g.
let [pair] = m;
let [key, obj] = pair;
is one option to destructure and then grab the value, but the easier option would be
let [obj] = m.values();
It could also be done using the spread feature at ES6 and the next versions. Let's declare a new Map variable, then add two values.
After that, we will use ...
to convert the map into array or you can use Array.from
then to get the first element just use [0]
on the gotten array.
const m = new Map();
m.set('key1', 1);
m.set('key2', 2);
console.log([...m][0]); // ['key1', 1] 👍🏼
Or quickly by using distruct feature for javascript array, so that [k, v]
array refers to first item at the map.
const [[k, v]] = m;
console.log(k, v); // 'key1', 1
Also, that is correct for both Set
and Map
: you can convert anything to Array
and then get any element by its index. Something like this:
const m = new Map();
m.set('key1', {});
m.set('key2', {});
console.log(Array.from(m)[0]); // ['key1', {}]