如何使用角度键/值对创建字典?

Ang*_*eji 9 angular angular6 angular7

使用概念字典我想做以下任务。

1. Closed
2. Open
3. Cancelled
4. Rejected
5. Saved
6. Draft
7. Pending Approval
Run Code Online (Sandbox Code Playgroud)

这是不同的状态。现在我的表如下

 Purchase Order            Status
 PO1                       closed
 PO2                       pending_approval
 PO3                       open
 PO4                       Draft
 PO5                       Cancelled
 PO6                       Rejected
 PO7                       Saved
Run Code Online (Sandbox Code Playgroud)

现在我需要使用徽章以不同颜色显示每个状态

使用的方法是字典法。

  1. 谁能告诉我什么是字典法?(简要说明)

  2. 也请给我解决方案

Nid*_*nan 19

来自康拉德·鲁道夫的 回答

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'));
Run Code Online (Sandbox Code Playgroud)

解决方案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'));
Run Code Online (Sandbox Code Playgroud)

字典.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;
      }
    }
Run Code Online (Sandbox Code Playgroud)

工作演示


Mik*_*red 6

字典是一种从键映射到值的数据类型,允许您在 O(1) 时间获取给定键的值。

在 Typescript 或 Javascript 中,您可以使用对象作为字典:

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

console.log(dictionary['key1']); // outputs 'value1'
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下Map类型:

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

console.log(map.get('key2')); // outputs 200
Run Code Online (Sandbox Code Playgroud)