javascript - 在 Typescript 中使用 find/reduce/filter 从数组中查找第一个匹配项
问题描述
“结果”会给我类型“事件|未定义”。
有没有办法让“结果”变成“事件”?
或者有什么方法可以使用reduce()或map()执行相同的行为?
我的目标是从数组中获取第一个匹配类别。
data: Event[] = [
{
title: "demo 1",
category: "a"
},
{
title: "demo 2",
category: "b"
},
{
title: "demo 3",
category: "a"
},
]
const result = data.find(item => item.category === 'a')
解决方案
如果您知道要比较的类别字符串将始终存在,则可以使用 not null 断言运算符!
:
// Note: the type hinting here is optional
const result: Event = data.find(item => item.category === 'a')!;
按索引访问数组永远不会给你Event | undefined
for Event[]
。所以,你也可以做这样的事情(同样,你会忽略 index 可以是的情况-1
):
const index = data.findIndex(item => item.category === 'a');
// Note: the type hinting here is optional
const result: Event = data[index];
推荐阅读
- firebase - 任务 ':app:transformClassesWithDexBuilderForDebug' 的 Cordova 执行失败
- c++ - while 循环与 for 循环中的迭代器失效
- c# - 使用统一容器的带有连接字符串的 EF 多个构造函数:“底层提供程序在打开时失败”
- flutter - 每次我在 Android Studio 的模拟器(Android 和 iOS)上构建 Flutter 应用程序时,都会出现“Type 'Color' is not a subtype of 'MaterialColor' 错误
- macos - 如何触发文件系统用户同意提示并将应用程序添加到“文件和文件夹”隐私窗格?
- java - 在 macOS Catalina 中为 Java 应用程序签署自定义 JRE
- nginx - 访问部署在 kubernetes 上的 istio-envoy 时 Nginx Bad Gateway 502
- python - 使用多处理包的冲突功能
- c# - 通过 C# Windows 窗体执行 Web 搜索
- javascript - 如何返回布尔可观察值并检查该布尔值