Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查JSON对象内部密钥的正确方法_Javascript_Node.js_Json - Fatal编程技术网

Javascript 检查JSON对象内部密钥的正确方法

Javascript 检查JSON对象内部密钥的正确方法,javascript,node.js,json,Javascript,Node.js,Json,我知道有不同的方法来检查JSON对象中的密钥 const person={ 姓名:'约翰', 年龄:25岁, Istenager:错 } 如果(个人姓名){ console.log('名称存在') } if(person.hasOwnProperty('age')){ console.log('age exists') } if(Object.prototype.hasOwnProperty.call(person'isTeenager')){ console.log('isTeenager存

我知道有不同的方法来检查JSON对象中的密钥

const person={
姓名:'约翰',
年龄:25岁,
Istenager:错
}
如果(个人姓名){
console.log('名称存在')
}
if(person.hasOwnProperty('age')){
console.log('age exists')
}
if(Object.prototype.hasOwnProperty.call(person'isTeenager')){
console.log('isTeenager存在')
}
  • hasOwnProperty()是正确的定义方法
  • 方法返回一个布尔值,指示对象是否将定义的属性作为自己的属性
  • hasOwnProperty()是正确的定义方法
  • 方法返回一个布尔值,指示对象是否将定义的属性作为自己的属性

  • 正如你在第一个例子中提到的,你不能总是依赖于真实的虚假检查。如果值为
    false

    if (person.isTeenager) {
      console.log('key exists')
    }
    else{
      console.log('key not exists')
    }
    

    在这件事上你会得到法尔西的。因此,始终使用
    hasOwnProperty
    方法

    您不能像第一个示例中提到的那样始终依赖truthy-falsy检查。如果值为
    false

    if (person.isTeenager) {
      console.log('key exists')
    }
    else{
      console.log('key not exists')
    }
    
    在这件事上你会得到法尔西的。因此,始终使用性能方面的
    hasOwnProperty
    方法,
    如果(obj.value!=未定义)
    将是“最好的”

    var perf=require(“perf_”)。性能;
    var obj={
    主持人:“嗨”
    };
    var start=perf.now();
    如果(obj.iExist!=未定义){//由于布尔函数的潜在问题,从obj.iExist更改为obj.iExist!=未定义。
    }
    var end=perf.now();
    log(“基本if:+(结束-开始));
    var start1=perf.now();
    if(对象hasOwnProperty('iExist')){
    }
    var end1=perf.now();
    log(“hasOwnProperty:”+(end1-start));
    
    输出:

    basic if: 0.06810665130615234
    hasOwnProperty : 4.006890296936035
    
    希望这有帮助

    性能方面,
    如果(obj.value!=未定义)
    将是“最佳”

    var perf=require(“perf_”)。性能;
    var obj={
    主持人:“嗨”
    };
    var start=perf.now();
    如果(obj.iExist!=未定义){//由于布尔函数的潜在问题,从obj.iExist更改为obj.iExist!=未定义。
    }
    var end=perf.now();
    log(“基本if:+(结束-开始));
    var start1=perf.now();
    if(对象hasOwnProperty('iExist')){
    }
    var end1=perf.now();
    log(“hasOwnProperty:”+(end1-start));
    
    输出:

    basic if: 0.06810665130615234
    hasOwnProperty : 4.006890296936035
    

    希望这有帮助

    这取决于您想要自己的财产还是继承的财产?您遗漏了
    if(“name”本人)
    if(person.name)
    如果财产的值为假值,则将失败。当您知道所有有效值都是真实值时,您可以使用它。这取决于您想要自己的属性还是继承的属性。您忽略了
    if(“name”亲自)
    if(person.name)
    如果属性的值为假值,则将失败。当您知道所有有效值都是真实值时,可以使用它。