首页 > 解决方案 > 如何将矩阵中的对象转换为另一种类型?

问题描述

我有一个二维业务对象数组,我需要将其转换为它们的“模型”表示(稍后发送到服务器)。

我想到的最简单的转换如下:

private tiles: Array<Array<Tile>>;
...
let tileModels = this.tiles.map(_tiles=>_tiles.map(tile=>tile.generateModel()));

如果我的数组不为空,这很有效。但是如果有任何空对象我得到错误:

无法读取 null 的属性“generateModel”

我可以将此转换转换为以下内容:

let tileModels = [];
this.tiles.forEach((_tiles) => {
  let row = [];
  _tiles.forEach((tile) => {
    if (tile != undefined) {
      row.push(tile.generateModel());
    }
  });
  tileModels.push(row);
});

但我想知道是否有更好的方法?

谢谢!

PS 这是在 Angular 10/TS 4.1 中,但我很想看看可以用其他语言完成的技巧。

标签: angularalgorithm

解决方案


对数组应用过滤器以确保删除所有null值。

const tileModels = this.tiles
  .map(tileGroup=>tileGroup
    .filter(tile=>!!tile)
    .map(tile=>tile.generateModel())
  );

推荐阅读