测试对象是否存在JavaScript

时间:2018-07-26 02:29:24

标签: javascript

我不敢相信以前不会问过这个问题,但是我尽我所能地搜索了它,所以找到了。

我想测试是否存在动态构建的JavaScript对象。但是,当我对此进行测试时:

var myObject = {};
var dynamicName = "customName";

if(myObject[dynamicName].object == undefined){
  myObject[dynamicName].object = "something"; // Make an entry in the dynamic object
  alert("The object didn't exist, so we populated it");
}else{
  alert("The object already exist");
}

如果该对象不存在,而我尝试运行上述代码,则会收到一条错误消息,提示“ myObject [dynamicName]未定义”,并且所有javascript执行都停止。

有没有一种方法可以检查我想要的对象是否存在而不会引起这种错误?

3 个答案:

答案 0 :(得分:1)

如果myObject[dynamicName]不存在,则无法访问其属性。尝试访问或分配undefined的属性会导致错误。

您需要创建对象,然后才能创建属性

if (myObject && myObject[dynamicName] && myObject[dynamicName].object !== undefined) {
    alert("The object already exists");
} else {
    myObject = myObject || {};
    myObject[dynamicName] = myObject[dynamicName] || {};
    myObject[dynamicName].object = something;
    alert("The object didn't exist, so we populated it");
}

答案 1 :(得分:0)

检查typeof ==对象

var userObject={
"name":"abc",
"kyc":true
};

var dynamicName="name";

if (typeof userObject == 'object' && userObject[dynamicName] != undefined) {
  console.log("UserObject Exists and valid");
}else{
console.log("UserObject does not Exists");
}

答案 2 :(得分:0)

有一个较短的版本,(几乎)没有笨拙的if

const myObject = {};
const dynamicName = 'customName';

const { [dynamicName]: obj = {} } = myObject;
if (obj.object == null) {
  obj.object = 'something'
  console.log('populated');
} else {
  console.log('existed');
}
myObject[dynamicName] = obj;

console.log(myObject)