如何检查JavaScript对象或数组中是否存在特定键?

如果密钥不存在,并且我试图访问它,它会返回false吗?或者抛出错误?


当前回答

JS双感叹号!!在这种情况下,符号可能会有所帮助。

const cars = {
        petrol:{
            price: 5000
        },
        gas:{
            price:8000
        }
    }

假设我们有上面的对象,如果你试图用汽油价格记录汽车。

=> console.log(cars.petrol.price);
=> 5000

你肯定会从中得到5000英镑。但如果你想得到不存在的电动汽车,那么你将不受约束

=> console.log(cars.electric);
=> undefine

但使用!!这是将变量转换为布尔值(真或假)。

=> console.log(!!cars.electric);
=> false

其他回答

如果您使用的是underscore.js库,那么对象/数组操作就变得简单了。

在您的情况下,可以使用_.has方法。例子:

yourArray = {age: "10"}

_.has(yourArray, "age")

返回true

But,

_.has(yourArray, "invalidKey")

返回false

接受的答案指的是对象。小心使用Array上的in运算符查找数据而不是键:

("true" in ["true", "false"])
// -> false (Because the keys of the above Array are actually 0 and 1)

测试数组中的现有元素:查找项目是否在JavaScript数组中的最佳方法?

JS双感叹号!!在这种情况下,符号可能会有所帮助。

const cars = {
        petrol:{
            price: 5000
        },
        gas:{
            price:8000
        }
    }

假设我们有上面的对象,如果你试图用汽油价格记录汽车。

=> console.log(cars.petrol.price);
=> 5000

你肯定会从中得到5000英镑。但如果你想得到不存在的电动汽车,那么你将不受约束

=> console.log(cars.electric);
=> undefine

但使用!!这是将变量转换为布尔值(真或假)。

=> console.log(!!cars.electric);
=> false

我们可以使用-hasOwnProperty.call(obj,key);

underscore.js方式-

if(_.has(this.options, 'login')){
  //key 'login' exists in this.options 
}

_.has = function(obj, key) {
  return hasOwnProperty.call(obj, key);
};

这里有一个我觉得很有用的助手函数

此keyExists(key,search)可用于轻松查找对象或数组中的键!

只需将要查找的键传递给它,然后搜索要查找它的obj(对象或数组)。

函数keyExists(键,搜索){if(!search||(search.constructor!==数组&&search.constructionr!==对象)){return false;}for(var i=0;i<search.length;i++){if(搜索[i]==键){返回true;}}搜索中的返回键;}//如何使用://在数组中搜索关键字console.log(keyExists('apple',[apple','banana','orange']);//真的console.log(keyExists('水果',[苹果','香蕉','橙色']);//假的//在对象中搜索关键字console.log(keyExists('age',{'name':'Bill','age':29}));//真的console.log(keyExists('title',{'name':'Jason','age':29}));//假的

它非常可靠,跨浏览器运行良好。