在使用forEach()从另一个对象数组创建新的对象数组时出现未定义的问题,可能是因为forEach()方法无法返回一个新的数组。forEach()方法是用于遍历数组的每个元素并执行回调函数,但它并不返回一个新的数组。
解决这个问题的方法是使用map()方法代替forEach()方法。map()方法会创建一个新的数组,其中包含对原始数组中的每个元素应用回调函数的结果。
下面是一个示例代码,展示如何使用map()方法从另一个对象数组创建新的对象数组:
interface OldObject {
id: number;
name: string;
}
interface NewObject {
id: number;
newName: string;
}
const oldArray: OldObject[] = [
{ id: 1, name: "Object 1" },
{ id: 2, name: "Object 2" },
{ id: 3, name: "Object 3" }
];
const newArray: NewObject[] = oldArray.map((oldObj: OldObject) => {
return {
id: oldObj.id,
newName: `New ${oldObj.name}`
};
});
console.log(newArray);
在上面的示例中,我们定义了两个接口OldObject
和NewObject
来表示旧的对象和新的对象。然后,我们创建了一个旧的对象数组oldArray
。接下来,我们使用map()方法遍历oldArray
,并根据每个旧对象创建一个新的对象,将其添加到新的对象数组newArray
中。在回调函数中,我们将旧对象的id
属性保持不变,而将name
属性添加前缀"New "后作为新对象的newName
属性的值。
最后,我们打印输出新的对象数组newArray
,可以看到它已成功创建并包含了正确的新对象。
推荐的腾讯云相关产品和产品介绍链接地址:
请注意,以上链接仅供参考,具体产品选择应根据实际需求和情况进行。
领取专属 10元无门槛券
手把手带您无忧上云