我正在创建一个检查:
的函数所以我做的是我使用||创建了一个if语句操作员将案件分开:
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]
};
出于某种原因,这不起作用。它还说"It Cannot read property 'length' of undefined"
。
知道我在这里缺少什么吗?
答案 0 :(得分:2)
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语句。
外部检查密钥是否存在,第二个内部检查它是否是一个数组,并且大多数内部检查该长度。如果它满足所有这些,它将返回第一个元素。否则返回undefined。