Javascript делает хороший способ «нарезать» карту

Я знаю о slice() для массивов, прямо сейчас, чтобы «нарезать» карту, я использую этот код:

const map = new Map([[1,"a"],[2,"b"]])

var arrayTmp = Array.from(map).slice(0,1);

var myMap = new Map();
arrayTmp.forEach(value => {
   myMap.set(value[0], value[1]); 
});

Он работает правильно, но мне было интересно, существуют ли какие-то нативные методы для получения более лаконичного кода?

Ключи в карте должны быть неупорядочены — как вы собираетесь их нарезать?

RidgeA 22.05.2019 17:07

@RidgeA думает, что вы думаете об объекте, а не о карте, карты упорядочены: «Объект Map содержит пары ключ-значение и запоминает исходный порядок вставки ключей». developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

atmd 22.05.2019 17:08

Не будет ли здесь массив работать лучше? Карты не индексируются, поэтому я думаю, что нарезка будет означать изрядное количество итераций.

OliverRadini 22.05.2019 17:11

@атмд ключи объектов упорядочены в ES6+

p.s.w.g 22.05.2019 17:12

@atmd, да, MDN так говорит. Но спецификация - не ecma-international.org/ecma-262/#sec-map-objects. Я думаю, что спецификация имеет приоритет.

RidgeA 22.05.2019 17:12

@atmd, да, похоже, что Map (как и Set) должен хранить записи в порядке вставки - ecma-international.org/ecma-262/6.0/#sec-map.prototype.forea‌​ch TIL :-)

RidgeA 22.05.2019 17:20

@RidgeA в спецификациях не сказано «сохранить порядок вставки ключей» наверху, однако, если вы проверите раздел .forEach, итерация явно описана как происходящая в порядке вставки. Кроме того, далее для .set шаги также явно говорят, что новая запись должна быть прошлой в List, которая описывает содержимое карты.

VLAZ 22.05.2019 17:21

@VLAZ, ага, уже нашел, смотрите мой коммент справа выше :-)

RidgeA 22.05.2019 17:24
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
3
8
2 849
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Map хранит пары ключ/значение в порядке вставки.

Вы можете пропустить итерацию и взять только нарезанный массив в качестве параметра для конструктора.

const
    map = new Map([[1, "a"], [2, "b"]]);
    arrayTmp = Array.from(map).slice(0, 1),
    myMap = new Map(arrayTmp),

console.log([...myMap]);

Другие вопросы по теме