在打字稿中将数组覆盖到索引对象



我有一个以下类型的数组。

interface IArray {
id: "message1" | "message2" | "message3";
message: string;
}
const myArray: IArray[] = [
{
id: "message1",
message: "Here is your message 1"
},
{
id: "message2",
message: "Here is your message 2"
}
]

我想将其转换为类型如下的索引对象。

const myObject = {
message1: "Here is your message 1",
message2: "Here is your message 2"
}

我可以编写一个将数组转换为对象的函数。

const myObject: any = {};
myArray.forEach((arrElement) => {
myObject[arrElement.id] = arrElement.message;
});

但是myObjectany型的。 而我希望myObject具有索引keys的类型,具体取决于数组id类型。

const myArray = [{key: "message1",message: "Here is your message 1"},{key: "message2",message: "Here is your message 2"}]
const result = myArray.reduce((a,b)=>{
a[b.key]=b.message;
return a
}, {});
console.log(result);

您可以使用forEach方法:

JavaScript:

let myArray = [{
id: "message1",
message: "Here is your message 1"
},
{
id: "message2",
message: "Here is your message 2"
}
];
let myObject = {};
myArray.forEach(item => {
myObject[item.id] = item.message;
});
console.log(myObject);

打字稿:

interface IArray {
id: "message1" | "message2" | "message3";
message: string;
}
const myArray: IArray[] = [{
id: "message1",
message: "Here is your message 1"
},
{
id: "message2",
message: "Here is your message 2"
}
];
let myObject: any = {};
myArray.forEach(item => {
myObject[item.id] = item.message;
});
console.log(myObject);

最新更新