我有这个对象,它有冗余属性,有时id存在,有时id2存在。我无法控制来源。
const obj = {
id: 123, // one of this is gone depends on the condition
id2: 123 // one of this is gone depends on the condition
}
如何将getId
的值分配给id
的{{1}}或id2
?
试过这个,但这会触发未定义的错误并导致整个应用程序崩溃。
obj
答案 0 :(得分:0)
var obj = { id2 : "some value" };
const getId = obj.id || obj.id2 || "both are absent";
console.log(getId);

var obj = {};
const getId = obj.id || obj.id2 || "both are absent";
console.log(getId);

您可以使用||
运算符并获取其中任何一个值。
答案 1 :(得分:0)
您可以检查obj.id
是否存在,然后将值指定给getId
。试试以下
const obj = {
id: 123, // one of this is gone depends on the condition
id2: 123 // one of this is gone depends on the condition
}
const getId = (typeof obj.id != "undefined") ? obj.id : obj.id2;
console.log(getId);
<强>被修改强>
在@SharonChai评论之后我正在修改我的答案,所以你在三元运算符中添加!==
更好更快。
const getId = (typeof obj.id !== "undefined") ? obj.id : obj.id;
答案 2 :(得分:0)
试试这个:
同时id
&amp; id2
存在:
var obj = {
id: 123, // one of this is gone depends on the condition
id2: 123 // one of this is gone depends on the condition
}
var getId;
Object.keys(obj).length ? getId = Object.keys(obj).map(item => obj[item]) : getId = "No property found in obj";
console.log(getId);
&#13;
当其中任何一个(id
或id2
)出现时:
var obj = {
id: 123
}
var getId;
Object.keys(obj).length ? getId = Object.keys(obj).map(item => obj[item]) : getId = "No property found in obj";
console.log(getId);
&#13;
当它们都不存在时:
var obj = {
}
var getId;
Object.keys(obj).length ? getId = Object.keys(obj).map(item => obj[item]) : getId = "No property found in obj";
console.log(getId);
&#13;
答案 3 :(得分:0)
只检查一个属性是否不可用,然后使用另一个属性。您可以通过多种方式完成此任务:
function getId(obj) {
return "id" in obj ? obj.id : obj.id2;
return obj.hasOwnProperty("id") ? obj.id : obj.id2;
return obj.id !== undefined ? obj.id : obj.id2;
}