获取对象属性而不提示未定义的错误

问题描述 投票:0回答:4

我有这个对象,它有冗余属性,有时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的值分配给idid2obj

试过这个,但这将触发未定义的错误并崩溃我的整个应用程序。 const getId = obj.id ? obj.id : obj.id2

javascript ecmascript-6
4个回答
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;

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);

您可以使用||运算符并获取其中任何一个值。


0
投票

试试这个 :

idid2都存在时:

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);

当他们中的任何一个(idid2)出现时:

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);

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.