所以,我有一个有时会为 null 的 prop。我想要获取该值或返回 null。
我目前正在这样做:
getOr(
null,
`shift.id`,
ownProps
);
我从 props 中获取 shifts.id,但是如果没有 shift.id
我会收到错误消息。如何返回 shift.id
或 null
?
最佳答案
_.getOr
的工作方式是,当在对象中找不到路径引用的值(第二个参数)时,它提供一个默认值(第一个参数)(第三个参数)。它实际上与 _.get
相同,但参数顺序颠倒了。
示例案例如下:
let myObjects = [{
shift: {
id: 1,
example: "text1"
}
},
{
shift: {
id: 2,
example: "text3"
}
},
{
shift: {
example: "text2"
}
}
]
myObjects.forEach((object) => {
let result = _.getOr(null, "shift.id", object)
console.log(result);
})
<script src="https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)"></script>
控制台输出为:
1
2
null
根据您的描述,虽然我不清楚这实际上是您想要做的事情。请记住,get/getOr 将返回路径引用的内容(即使它已经为 null),除非它不存在(如 undefined
中),此时它将返回默认值。
因此,在这种情况下,如果没有 shift.id
,您将要求 _.getOr
返回 null。听起来当您尝试将 GraphQL 与 null 值一起使用时,您会收到一个错误。在这种情况下,这不是 lodash 的问题,而是您的数据/您使用 GraphQL 的方式的问题。
如果这不是适合这项工作的工具,那么在没有看到更多代码/了解更多有关问题的信息之前,我无法提出任何其他建议。我建议您重新审视一下您的整体问题,然后如果需要的话可能会问一个不同的问题。
关于javascript - Lodash getOr 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55534166/