我有这个对象,它有冗余属性,有时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
的id2
或obj
?
试过这个,但这将触发未定义的错误并崩溃我的整个应用程序。 const getId = obj.id ? obj.id : obj.id2
您可以检查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;
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);
您可以使用||
运算符并获取其中任何一个值。
试试这个 :
当id
和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);
当他们中的任何一个(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);
当它们都不存在时:
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);
只需检查一个属性是否不可用,然后使用另一个。您可以通过多种方式执行此操作:
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;
}