如何在打字稿中将地图对象转换为数组

时间:2020-05-26 10:33:03

标签: arrays typescript

我正在从服务器获取这种格式的Json

Details:{1:"John",2:"Josh"}

我想将其转换为这种FormArray格式

Details:[{"Number": 1, "Name": John},{"Number": 2, "Name": Josh}]

如何实现?我正在使用Angular 8。

3 个答案:

答案 0 :(得分:0)

const input = {1:"John",2:"Josh"};
const output = Object.keys(input).map((key) => {
  return {
    Number: key,
    Name: input[key]
  }
});

console.log(output);

您只需要使用Object.keys()即可将对象的所有键放入数组中,然后对其进行迭代并将其映射到新数组中。

答案 1 :(得分:0)

尝试

const input = { 1: "John", 2: "Josh" };
let Details = [];

for (let key of Object.keys(input)) {
  let detail = { "Number": key, "Name": input[key] };

  Details.push(detail);
}

我建议,如果您有权访问服务器代码,则应对其进行修改,以返回所需格式的数据,因为当服务器返回包含1000多个项的对象时,这会减慢您的应用程序(前端)的速度。

答案 2 :(得分:0)

上面的答案遗漏了一点,那就是Number到井number的转换:

const input = {1:"John",2:"Josh"};
const output = Object.keys(input).map((key) => {
  return {
    Number: parseInt(key, 10), // This bit
    Name: input[key]
  }
});