我有一个以下类型的数组。
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;
});
但是myObject
是any
型的。 而我希望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);