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