javascript - Lodash getOr 为 null

标签 javascript lodash

所以,我有一个有时会为 null 的 prop。我想要获取该值或返回 null。

我目前正在这样做:

getOr(
    null,
    `shift.id`,
    ownProps
  );

我从 props 中获取 shifts.id,但是如果没有 shift.id 我会收到错误消息。如何返回 shift.idnull

最佳答案

_.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/

相关文章:

javascript - 如何在 Lodash _.each 中获取数组索引

javascript - 如何在angularjs中获取嵌套常量的值?

Javascript、CSS、按钮在第一次点击后不调用动画函数

javascript - 文件拖放,检测何时掉到外面?

javascript - 使用 javascript 检查图像 url 在 Chrome 中不起作用

javascript - 为什么lodash drop()操作不支持shortcut fusion?

javascript - 是否可以在 ASP.Net 中执行客户端代码之前执行服务器端代码

javascript - 无法从不同的脚本文件读取返回的 Javascript 对象

javascript - 合并一组相似对象的值

javascript - 如何从任何深度的嵌套 javascript 对象中删除属性?