如何使用打字稿将地图值存储到数组的第一个位置?

How to store map values into an array to its first position using typescript?

我有一张地图,想将地图值存储到一个数组中,但只存储到它的第一个位置。 我的地图是:

this.mapValues.set("1","First");
this.mapValues.set("2","Second");
this.mapValues.set("3","Third");

然后我想让它转换成以下形式:

[{1:First, 2: Second, 3: Third}]

不确定此处所需的功能。为什么完全使用 Map 只是为了稍后将其转换为包含在数组中的对象。

不过,您可以将 Array#reduceArray#from 和传播语法一起使用,以将地图转换为对象。然后将其封装在一个数组中。

let mapValues = new Map();

mapValues.set("1","First");
mapValues.set("2","Second");
mapValues.set("3","Third");

const arr = [Array.from(mapValues).reduce((acc, curr) => ({ 
    ...acc, 
    [curr[0]]: curr[1] 
}), Object.create(null))];

console.log(arr);

注意:Maps 可以有非字符串键,对象文字不能。然而,在您的情况下,这应该不是问题。

编辑:当 Object#fromEntries 不可用时替代其他解决方案。

我觉得像

const myarray = [Object.fromEntries(this.mapValues)]

随心所欲

(见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries#converting_a_map_to_an_object

我不确定所有地图都可以转换为对象,因为地图可以将任何类型的值作为键,但对于您的示例,它应该可以工作。