Javascript 检查对象键是否为空数组或是否具有自己的属性
我正在创建一个函数来检查:Javascript 检查对象键是否为空数组或是否具有自己的属性,javascript,arrays,object,Javascript,Arrays,Object,我正在创建一个函数来检查: 如果数组为空,则应返回undefined 如果给定键处的属性不是数组,则应返回undefined。 如果键处没有属性,则应返回undefined 所以我所做的是,我使用| |运算符创建了一个if语句来分隔案例: function getFirstElementOfProperty(obj, key) { if(obj.key.length === 0 || !obj.key.isArray || !obj.key.hasOwnProperty(key)){
function getFirstElementOfProperty(obj, key) {
if(obj.key.length === 0 || !obj.key.isArray || !obj.key.hasOwnProperty(key)){
return undefined;
}else{
return obj.key[0];
}
}
var obj = {
key: [1, 2, 4]
};
出于某种原因,这不起作用。它还表示,“它无法读取未定义的”
的属性'length'
你知道我在这里遗漏了什么吗
function getElem(obj, key){
if (key in obj){
if (Array.isArray(obj[key])){
if (obj[key].length){
return obj[key][0];
}
}
}
return undefined;
}
var obj = {key: [1, 2, 4], key2: []};
getElem(obj, "key") // 1
getElem(obj, "key2") // undefined
getElem(obj, "key3") // undefined
不是javascript专家,但我相信这是可行的。如果我没记错的话,javascript没有短路计算,因此需要嵌套If语句
外部检查键是否存在,第二个内部检查键是否是数组,大多数内部检查键的长度。如果它满足所有这些条件,则返回第一个元素。否则它返回未定义。您还可以检查是否存在
obj
和obj.key
。在我看来,您的obj.key
是未定义的数组.isArray(obj[key])?obj[key][0]:void 0执行该作业。