Как создать словарь с парами ключ / значение в угловых? - PullRequest
2 голосов
/ 13 мая 2019

Используя концептуальный словарь, я хочу выполнить следующую задачу.

1. Closed
2. Open
3. Cancelled
4. Rejected
5. Saved
6. Draft
7. Pending Approval

Это разные статусы. Теперь моя таблица выглядит следующим образом

 Purchase Order            Status
 PO1                       closed
 PO2                       pending_approval
 PO3                       open
 PO4                       Draft
 PO5                       Cancelled
 PO6                       Rejected
 PO7                       Saved

Теперь мне нужен каждый статус разного цвета, используя значок

Метод, используемый в словаре.

  1. Кто-нибудь может сказать мне, что такое словарный метод? (Краткое объяснение)

  2. И, пожалуйста, дайте мне решение тоже

Ответы [ 2 ]

1 голос
/ 13 мая 2019

A словарь - это то, что отображается от ключей к значениям и позволяет получить значение для данного ключа за O (1) раз.

В Typescript или Javascript вы можете использовать объект в качестве словаря:

const dictionary = {
  'key1': 'value1',
  'key2': 'value2'
};

console.log(dictionary['key1']); // outputs 'value1'

Вы также можете использовать Map тип:

const map = new Map<string, number>();
map.set('key1', 100);
map.set('key2', 200);

console.log(map.get('key2')); // outputs 200
1 голос
/ 13 мая 2019

Предоставлено Конрад Рудольф ответ

Dictionary - это «правильное» имя интерфейса (= ADT ), то есть ассоциативный контейнер, который отображает (обычно уникальные) ключи (не обязательно уникальные) значения.

Подводя итог: словарь - это ADT, который сопоставляет ключи со значениями. Существует несколько возможных реализаций этого ADT, одной из которых является хэш-таблица . Hash является неправильным, но в контексте он эквивалентен словарю, который реализован в виде хеш-таблицы.

Решение 1

Прямо вперед вы можете использовать Карта тип в качестве рекомендации

    //Using Map
    let map = new Map<string, string>();

    map.set("PO1", "closed"); 
    map.set("PO2", "pending_approval");
    map.set("PO3", "open");
    map.set("PO4", "Draft");
    map.set("PO5", "Cancelled");
    map.set("PO6", "Rejected");
    map.set("PO7", "Saved");

    //get item
    console.log(map.get('PO1'));
    console.log(map.get('PO5'));

    //has item
    console.log(map.has('PO1'));
    console.log(map.has('PO5'));

    //delete item
    console.log(map.delete('PO1'));
    console.log(map.delete('PO5'));

Решение 2

Но если вам нужны пользовательские дополнительные методы, вы также можете создать реализацию Dictionary в машинописи, как показано ниже

    //Using Dictionary
    let dict = new Dictionary();

    dict.set("PO1", "closed"); 
    dict.set("PO2", "pending_approval");
    dict.set("PO3", "open");
    dict.set("PO4", "Draft");
    dict.set("PO5", "Cancelled");
    dict.set("PO6", "Rejected");
    dict.set("PO7", "Saved");

    //get item
    console.log(map.get('PO1'));
    console.log(map.get('PO5'));

    //has item
    console.log(map.has('PO1'));
    console.log(map.has('PO5'));

    //delete item
    console.log(map.delete('PO1'));
    console.log(map.delete('PO5'));

dictionary.ts

    export class Dictionary {
      items = {};
      constructor() {
        this.items = {};
      }
      public has(key) {
        return key in this.items;
      }
      public set(key,value) {
        this.items[key] = value;
      }
      public get(key) {
        return this.items[key];
      }
      public delete(key) {
        if( this.has(key) ){
          delete this.items[key]
          return true;
        }
        return false;
      }
    }

Рабочая демоверсия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...