如何检查JavaScript对象或数组中是否存在特定键?
如果密钥不存在,并且我试图访问它,它会返回false吗?或者抛出错误?
如何检查JavaScript对象或数组中是否存在特定键?
如果密钥不存在,并且我试图访问它,它会返回false吗?或者抛出错误?
当前回答
可选的Chaining(?.)运算符也可用于此
来源:MDN/Operators/Optional_chaining
常量冒险家={name:'爱丽丝',猫:{name:“Dinah”}}console.log(冒险家.dog?.name)//未定义console.log(冒险家.cat?.name)//Dinah
其他回答
答覆:
if ("key" in myObj)
{
console.log("key exists!");
}
else
{
console.log("key doesn't exist!");
}
说明:
in运算符将检查对象中是否存在密钥。如果检查值是否未定义:如果(myObj[“key”]==“undefined”),则可能会遇到问题,因为对象中可能存在具有未定义值的键。
出于这个原因,最好先使用in运算符,然后在知道键存在后比较键内的值。
JavaScript Destructuring的新解决方案:
let obj = {
"key1": "value1",
"key2": "value2",
"key3": "value3",
};
let {key1, key2, key3, key4} = obj;
// key1 = "value1"
// key2 = "value2"
// key3 = "value3"
// key4 = undefined
// Can easily use `if` here on key4
if(!key4) { console.log("key not present"); } // Key not present
检查JavaScript Destructuring的其他用法
如果您使用的是underscore.js库,那么对象/数组操作就变得简单了。
在您的情况下,可以使用_.has方法。例子:
yourArray = {age: "10"}
_.has(yourArray, "age")
返回true
But,
_.has(yourArray, "invalidKey")
返回false
在“array”世界中,我们可以将索引视为某种键。令人惊讶的是,in运算符(这是对象的好选择)也适用于数组。不存在键的返回值未定义
设arr=[“a”,“b”,“c”];//我们有索引:0,1,2删除arr[1];//在索引1处设置“空”arr.pop();//删除最后一项console.log(arr中的0,arr[0]);console.log(arr中的1,arr[1]);console.log(arr中的2,arr[2]);
最简单的检查方法是
"key" in object
例如:
var obj = {
a: 1,
b: 2,
}
"a" in obj // true
"c" in obj // false
返回值true表示对象中存在键。