繁体   English   中英

将数组覆盖到 typescript 中的索引 object

[英]Coverting array to indexed object in typescript

我有以下类型的数组。

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"
   }
]

我想将其转换为具有以下类型的索引 object。

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

我可以编写一个 function 将数组转换为 object。

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);

TypeScript:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM