Значение карты по умолчанию

1

Я ищу что-то вроде значения по умолчанию для карты.

m = new Map();
//m.setDefVal([]); -- how to write this line???
console.log(m[whatever]);

Теперь результат не определен, но я хочу получить пустой массив [].

  • 1
    Пустой массив пуст и поэтому не имеет элемента с индексом [0]
  • 1
    m[whatever] || []
Теги:
arrays
dictionary
default-value

1 ответ

0
Лучший ответ

Прежде всего, чтобы ответить на вопрос о стандартной Map: Javascript Map, как предложено в ECMAScript 2015 не включает в себя сеттер для значений по умолчанию. Это, однако, не мешает вам реализовать эту функцию самостоятельно.

Если вы просто хотите распечатать список, всякий раз, когда m [whatever] не определено, вы можете просто: console.log(m.get('whatever') || []); как указал Ли357 в своем комментарии.

Если вы хотите повторно использовать эту функциональность, вы также можете инкапсулировать ее в такую функцию, как:

function getMapValue(map, key) {
    return map.get(key) || [];
}

// And use it like:
const m = new Map();
console.log(getMapValue(m, 'whatever'));

Если это, однако, не удовлетворяет вашим потребностям, и вы действительно хотите, чтобы карта имела значение по умолчанию, вы можете написать свой собственный класс карты для него, например:

class MapWithDefault extends Map {
  get(key) {
    return super.get(key) || this.default;
  }
  
  constructor(defaultValue) {
    super();
    this.default = defaultValue;
  }
}

// And use it like:
const m = new MapWithDefault([]);
console.log(m.get('whatever'));
  • 0
    Я считаю, что вы должны поддерживать то, что конструктор Map уже требует, не так ли?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню