javascript - 当值为空时使用扩展运算符
问题描述
有没有办法在扩展运算符中处理 null,而不指定 if 和 else?
在以下情况下,我只想在assignedStudents
未定义时传播。
如果我在不使用 if else 的情况下执行此操作,则会收到错误消息:
TypeError:传播不可迭代实例的无效尝试
为了处理这个问题,我正在使用 if else,但认为有更好/优雅的方式来做到这一点。
let questions;
if (assignedStudents) {
questions = [
...assignedStudents,
{
questionId: randomId,
question: ''
}
];
} else {
questions = [
{
questionId: randomId,
question: ''
}
];
}
解决方案
你的意思是这样的使用无效合并运算符
const questions = [
...(assignedStudents ?? []),
{
questionId: randomId,
question: ""
}
]
当然,如果assignedStudents
是不可迭代的(如 aNumber
或Object
),这不会保护你。它没有那么花哨,但是如果您只想对数组进行操作,请使用Array.isArray()
const questions = [
...(Array.isArray(assignedStudents) ? assignedStudents : []),
{
questionId: randomId,
question: ""
}
]
由于您已使用typescript标记此问题,因此您应该将其标记assignedStudents
为可为空的数组,例如
assignedStudents?: Something[]
在这种情况下,上述问题不再是问题。
推荐阅读
- pytorch - Pytorch 中的图像增强
- python - 如何识别有效的 DNA 序列?
- python - 如何在热图框架(python)中使用phone_code参数
- javascript - 显示预览的按钮处理程序
- css - Rails5没有路线匹配[GET]“/bootstrap/css/bootstrap.min.css”
- python-3.x - VSCode 无法识别 python 解释器
- python - 如何检查字典是否具有列表中想要的相同元素?
- hazelcast-jet - Hazelcast Jet Kafka,带有不可序列化的事件处理程序
- node.js - Sequelize 有没有办法在启动删除操作之前检查表中是否存在行?
- xml - 如何在单个 XPath 表达式中执行两个函数?