使用JavaScript将对象转换为另一个对象

时间:2020-10-14 22:14:54

标签: javascript casting

我有一个动物对象,看起来像这样:

AnimalObject {attributes: {…}, locations: {…}}

动物对象类:

export default class AnimalObject {
  constructor(apiResult, included) {
    this.attributes = apiResult.attributes;
    this.locations = apiResult.locations;

    ...
  }

我现在有一个名为FishObject的特定AnimalObject,它具有一些与鱼类相关的方法。

export default class FishObject extends AnimalObject {

  getFood(){
   const foods = this.getFishFood(this.attributes)
   return foods
  }

  talk(){
    return "blub"
  }
}

javascript中是否可以将动物对象列表[{AnimalObject}, {AnimalObject}]转换为Fish对象?我想通过AnimalObject列表进行映射并调用fish方法。

-更新:我最有可能实例化Fish类...

1 个答案:

答案 0 :(得分:0)

您可以使用Object.assign()方法进行处理。 如果您将其包装如下:

function castToFish(animalObject) {
     return Object.assign(new FishObject(),  animalObject)
}

然后您可以使用map转换数组:

var fishArray = [...someAnimalObjects].map(castToFish)

当然,我假设您可以使用es6语法。