如何在打字稿中将枚举转换为键、值数组?

use*_*041 3 javascript arrays enums casting typescript

var enums = {
  '1': 'HELLO',
  '2' : 'BYE',
  '3' : 'TATA'
  };
Run Code Online (Sandbox Code Playgroud)

我希望能够将其转换为如下所示的数组,

[
  {
    number:'1',
    word:'HELLO'
  },
  {
    number:'2',
    word:'BYE'
  },
  {
    number:'3',
    word:'TATA'
  }
]
Run Code Online (Sandbox Code Playgroud)

我看到的所有解决方案都形成一个键或值的数组。

Cod*_*iac 7

您可以使用Object.entries并将其映射到所需的格式

var enums = {
  '1': 'HELLO',
  '2' : 'BYE',
  '3' : 'TATA'
  };
  
let op = Object.entries(enums).map(([key, value]) => ({ number:key, word:value }))

console.log(op)
Run Code Online (Sandbox Code Playgroud)


Nin*_*olz 6

您可以使用速记属性来映射条目。

var enums = { 1: 'HELLO', 2: 'BYE', 3: 'TATA' },
    objects = Object.entries(enums).map(([number, word]) => ({ number, word }));

console.log(objects);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)


Shi*_*rsz 3

另一种选择是使用for ... in循环来迭代enums键并构造所需的对象数组。

var enums = {
  '1': 'HELLO',
  '2' : 'BYE',
  '3' : 'TATA'
};

let res = [];

for (key in enums)
{
    res.push({number: key, word: enums[key]});    
}

console.log(res);
Run Code Online (Sandbox Code Playgroud)
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
Run Code Online (Sandbox Code Playgroud)