angular - 如何将矩阵中的对象转换为另一种类型?
问题描述
我有一个二维业务对象数组,我需要将其转换为它们的“模型”表示(稍后发送到服务器)。
我想到的最简单的转换如下:
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 中,但我很想看看可以用其他语言完成的技巧。
解决方案
对数组应用过滤器以确保删除所有null
值。
const tileModels = this.tiles
.map(tileGroup=>tileGroup
.filter(tile=>!!tile)
.map(tile=>tile.generateModel())
);
推荐阅读
- javascript - 如何在英雄图像上获得这种混合模式效果并修复导航菜单不透明度?
- unit-testing - 使用 @WithMockUser 的参数化 Spock 测试
- linux - 配置 dropbear 失败:缺少 zlib
- java - onDraw 中的 invalidate() 没有调用 onDraw
- pytube - pytube:urllib.error.httperror:http错误404:未找到
- android - ReactNative:生成与调试版本不同的APP名称的发布APK?
- google-apps-script - 使用替代运行时将电子邮件从收件箱视图拖放到使用 Gmail 插件构建的插件卡(与 Google 的任务应用程序相同)
- php - 从 localhost 和 apache 服务器上的 codeigniter 项目中删除 index.php
- shopify - 如何在shopify产品页面中显示两个图像垂直滑块
- regex - 正则表达式查找字符串,解析下一个字符串以在开头和结尾添加字符