Javascript 未定义对象属性时默认为值

Javascript 未定义对象属性时默认为值,javascript,Javascript,我有一个对象(来自graphQl查询的返回),为了在使用数据之前简化数据结构,我正在对其进行迭代。在数据模型中有一些非必填字段,我希望在数据存在时使用它,如果不存在,则默认为未定义 这是我目前的职能: const parseNovice = data => { return data.allContentfulNovica.edges.map(edge => { return { createdAt: edge.node.createdAt, id

我有一个对象(来自graphQl查询的返回),为了在使用数据之前简化数据结构,我正在对其进行迭代。在数据模型中有一些非必填字段,我希望在数据存在时使用它,如果不存在,则默认为未定义

这是我目前的职能:

const parseNovice = data => {
  return data.allContentfulNovica.edges.map(edge => {
    return {
      createdAt: edge.node.createdAt,
      id: edge.node.id,
      slika: edge.node.slika.file.url || undefined,
      tekst: edge.node.tekst.tekst || undefined,
      naslov: edge.node.naslov
    };
  });
};
我得到的错误是:

TypeError:无法读取null的属性“file”

换句话说,缺少图像的文件,因此未定义文件属性。是否有一种方法可以让我默认为未定义,而不管链中缺少哪些属性


我应该为此使用try/catch吗?

不是以干净的本地方式。您需要在整个过程中执行
undefined
检查。你应该考虑一下LoaSH的含义。它包装了执行
未定义检查的逻辑。因此,如果你发现自己在做这些深层次的代码>未定义的< /代码>检查,你可能想考虑使用它或编写自己的实用程序。
否则,您将不得不这样写:

let边;
让事物={
道具:edge!==未定义和&edge.node!==未定义和&edge.node.tekst!==未定义和&edge.node.tekst.tekst!==未定义?edge.node.tekst.tekst:未定义,
prop2:u.get(边,“node.tekst.tekst”)
}
console.log(东西);//未定义
边缘={
节点:{
特克斯特:{
tekst:“富”
}
}
};
事情={
道具:edge!==未定义和&edge.node!==未定义和&edge.node.tekst!==未定义和&edge.node.tekst.tekst!==未定义?edge.node.tekst.tekst:未定义,
prop2:u.get(边,“node.tekst.tekst”)
}
console.log(东西);//foo

谢谢,我决定使用lodash,因为我正在导入它,但忘记了
.get()
函数。